John Najarian
Professor • Department of
Professional Interests
Algorithmics, Artificial Intelligence, Theory of Automata,
Combinatorial Group Theory, Computability and Degrees of Unsolvability,
Computational Complexity, Computer Graphics, Formal Languages,
Theory of Computation
Other Interests
Logic, Mathematics, Other Sciences, Art, Music Appreciation, Game Programming,
Degrees
Specialization
Algorithmics, Artificial Intelligence, Theory of Automata, Combinatorial Group Theory, Computability and Degrees of Unsolvability, Computational Complexity, Computer Graphics, Formal Languages, Theory of Computation
Notable Courses Taught
CS 3600 Parallel and Distributed Computing (in Fall 2022)
An introduction to the concepts, models, architectures, and programming methodologies for parallel and distributedcomputation. Parallel algorithm design strategies (with patterns such as divide-and-conquer, map and reduce, master-workers) for multi-core, multi-processor, and network-based concurrency and parallelism by applying OpenMP. MPI, threads,semaphores, message-passing, and other coordination tools, both in tightly-coupled and networked environments. Issues in shared memory, racing, and deadlock, and other problems will be addressed and resolved.Actual coding projects will be in C++, Java, Hadoop, and other languages in support of these paradigms with appropriate API's(application program interfaces). Performance will be determined both by experimentation and analytic methods with respect to several measures such as time and space complexity. (Optional: If time permits, we will introduce GPU Programming.)