Teaching Schedule

My teaching schedule at Stockton University for the next couple semesters includes:

Courses Recently Taught

CSCI 4600: Senior Seminar (Last taught: Spring 2021, Syllabus): In this seminar, computer science majors learn to evaluate the impact of current computing practice and trends; and gain an understanding of professional, ethical, and legal responsibilities. Students read and report on articles from the computing literature, and also develop a professional resume. Fulfills university's Values/Ethics (V) requirement.

CSCI 4463: Artificial Intelligence (Last taught: Spring 2021, Syllabus): A study of tools, techniques, and applications associated with intelligent computer systems. The course will include topics from classical symbolic AI as well as topics from computational intelligence. Topics will include intelligent problem-solving methods, knowledge representation, heuristics, genetic algorithms, and selected topics from machine learning. Counts as an elective for the Minor in Behavioral Neuroscience.

CSCI 4104: Data Structures and Algorithms II (Last taught: Spring 2021, Syllabus): In this course, students deepen their knowledge of the design and analysis of computer algorithms. Advanced topics in algorithms and algorithm analysis covered in the course include graphs and graph algorithms, string matching, multi-threaded algorithms, and NP-completeness. Taught using Python.

GNM 2248: Artificial Intelligence in Society (Last taught: Fall 2020, Syllabus): This course will provide a broad overview and introduction to the field of artificial intelligence (AI) focusing on the impacts it has made on society during the past 50 years. The intended audience for this course is that of the general student. No mathematical background is required. The course will begin by providing a broad overview of what AI is, and what it is not, including a discussion of the notions of Strong and Weak AI. Strong AI hypothesizes that the human mind is nothing more than a computational device and thus that computers can in principle be programmed with the capability of thought (i.e., to truly reason and solve problems). Contrast this with Weak AI which does not focus on whether machines can be made to actually think, but rather whether machines can be made to act intelligently. We will read and discuss articles by the pioneering scientists and philosophers that explore these notions. Next, the course will focus on introducing the student to applications of AI that have been making their ways into our everyday lives. Attention will be placed on the ethical issues and the impacts AI technology will continue to make on society. The course will include a combination of lectures, class discussion of films (both fiction and non-fiction) and assigned readings (both non-fiction and fiction), as well as current day news articles. Counts as an elective for the Minor in Behavioral Neuroscience. Fulfills university's Historically Conscious (H) requirement, and offered as a Writing Across the Curriculum (W2) course.

Other Courses Taught

Courses in this section are those that I haven't taught for a while.

CSCI 4510: Topics in Computer Science: Human Performance Modeling (Last taught: Spring 2010): In this course, students synthesize their computer science coursework experience to explore real world problems of interest to local governmental agencies and industry. Working as a small group, in close collaboration with the instructor, students explore research questions related to human performance in aviation-related tasks (e.g., air traffic control). The course includes a study of topics related to statistical data mining with an application to human performance modeling.

CSCI 4510: Topics in Computer Science: Real World Applications of Intelligent Systems (Last taught: Fall 2009): In this course, students synthesize their computer science coursework experience to explore real world problems of interest to local governmental agencies and industry. Working as a small group, in close collaboration with the instructor, students undertake research on air traffic management.

CSCI 4485: Software Engineering (Last taught: Fall 2017, Syllabus): This course covers software engineering fundamentals, including software life cycle, process models, requirements engineering, software design, coding, testing, team software development, and application of engineering tools. Central to the course, student teams develop projects to practice engineering knowledge and skills in a realistic development setting.

CSCI 4481: Cryptography and Data Security (Last taught: Fall 2018, Syllabus): Cryptography has become an essential tool for data security. It is used to provide data confidentiality, integrity, and availability. It supports the authentication of data and protection of privacy. However, cryptography is only one component of a security system. There are hardware, software engineering, social and political issues that also must be considered. This course provides a broad view of security with practical applications of cryptography to data security. Specific topics include classical and modern encryption techniques, steganography, and human factors.

CSIS 4466: Computer Graphics (Last taught: Fall 2015, Syllabus): This course provides an introduction to 2D and 3D computer graphics including the study of hardware, software, algorithms, modeling, rendering, and applications. Topics will be introduced using the Java 2D and 3D APIs.

CSCI 3103: Data Structures and Algorithms I (Last taught: Spring 2017, Syllabus): Advanced topics in the specification, implementation, and use of important data structures and associated algorithms. Data structures to be studied include stacks, queues, lists, trees, heaps, priority queues, sets/maps, and hash tables. Algorithm analysis is also studied, with emphasis on searching and sorting. Programming projects provide experience using the concepts covered in the course. Taught using Java.

GNM 2358: Introduction to Game Theory (Last taught: Fall 2007, Syllabus): This course will introduce the student to topics in Game Theory. Game Theory is a high level mathematical field that governs conflict resolution and decision making skills. This course is an interesting blend of deep mathematical theory and real-world practicality. Due to the rich applications associated with this field, this is a perfect course for Math, Science, Business, Economic, and Psychology majors. The students will be introduced to theoretical mathematical tools including matrices, vectors, and graph theory. In addition, students will be taught applications associated with Biology, Politics, and Computer Science. Topics for the course include Two-player Zero-Sum (as well as Non-Zero-Sum) games of perfect information, Pure and Mixed Strategies, Dominance, and Rationality.

CSCI 2226: Foundations of Computer Science ("Discrete Math 2") (Last taught: Spring 2014, Syllabus): This course will review and build upon the major concepts introduced in MATH 2225 and examine additional mathematical topics needed for the study of computer and information science. A principal goal is the development of the ability to think mathematically about computer science problems and their solutions. Computer-based exercises using the Python language will provide students with additional experience with logic, induction and other methods of mathematical proof, and algorithms. Students will also learn to formulate conjectures and investigate possible answers through computational experiments in Python. Applications studied may include the verification of algorithms, the formal specification of software systems, semantics of programming languages, automata, circuit design, and parallel computing.

CSCI 2102: Programming and Problem Solving II (Last taught: Spring 2008, Syllabus): This course continues the development of problem solving and programming techniques. Emphasis is placed on data abstraction and implementation techniques such as recursion and dynamic data structures; and more advanced object oriented design concepts such as inheritance, exception handling, and GUI. Assignments involve writing programs using these techniques in an integrated development environment. Taught using Java.

CSCI 2101: Programming and Problem Solving I (Last taught: Spring 2011, Syllabus): An introduction to the fundamentals of software development, including logic, control structures, subprograms, classes, objects, documentation techniques, testing, and debugging. Assignments give hands-on experience writing, debugging, and running programs using an integrated development environment. This course is a serious introduction to computer science and preparation for more advanced courses in computing. Taught using Java.

CSIS 1180: Computing Concepts and Applications (Last taught: Fall 2005): This course is a survey of the history of computers, hardware components, operating systems, programming languages, program development environment, major application packages, data communication, networking, and the social impacts of computers. Major application software includes hands-on experience on wordprocessor, spreadsheet, database, presentation and communication programs.

Courses Taught at Drexel University

Courses in this section are those that I taught in the distant past.

CS 485 / CS 680: Knowledge-Based Agents (Last taught: Winter 2005): This is an advanced level undergraduate course / graduate level course that introduces the basic concepts of agent-based computing and exposes students to a wide set of topics ranging from mathematical logic to game theory to emergent behavior to distributed systems. CS 680 is the graduate course number.

CS 481: Advanced Artificial Intelligence (Last taught: Summer 2005): This course covers advanced topics in artificial intelligence. The course particularly empasizes representation, reasoning, and decision-making under uncertainty, dealing with large real-world data sets, learning, and solving problems with time-varying properties. You will learn how to represent and reason about decision-making under uncertainty with methods such as Bayesian Networks and Decision Networks; how to represent and solve problems with time-varying properties using methods such as Markov Decision Processes; how to learn representations of poorly understood problems with machine learning (ML) methods such as reinforcement learning, neural networks, and other ML methods as time permits.

CS 380: Introduction to Artificial Intelligence (Last taught: Spring 2005): This course will provide a foundational introduction to topics in Artificial Intelligence, emphasizing search, knowledge representation, and planning.