Teaching

CSCI 4450/8456 Artificial Intelligence (Fall 2024)

Undergraduate course, UNO, 2024

Artificial intelligence (AI) is rapidly advancing due to breakthroughs in data accessibility, computing power, and algorithmic sophistication. This has contributed to a surge in AI applications across various domains, including search, machine learning, natural language processing, robotics, and computer vision. This course provides a foundational understanding of AI, exploring core concepts in problem-solving, heuristic search, knowledge representation, deduction, planning, and learning. Through hands-on programming assignments, students will develop autonomous agents capable of making informed decisions in complex environments. Upon course completion, students will be able to develop intelligent systems capable of autonomous decision-making and learning in fully informed, partially observable and adversarial settings. They will also master constraint programming techniques to address complex optimization challenges. This coursework provides a strong foundation for pursuing advanced AI research and practical applications. The main learning objectives of the course are to identify problems suitable for artificial intelligence techniques, and apply basic AI techniques and evaluate the suitability of more advanced methods, and contribute to the design of systems that exhibit intelligent behavior and learn from experience.

CSCI4500 Operating Systems (Fall 2024)

Undergraduate course, UNO, 2024

An operating system is an abstraction of computer system hardware; it manages the sharing of various hardware and software resources among the users of the computer system. The parallel history of hardware and operating system development introduces many key concepts including, for example, processor modes, direct memory access (DMA), device controllers, and virtual memory. Basic approaches to kernel organization and implementation are considered. This is often the first course in which students encounter concurrency and concurrent programs. Additional topic areas include system performance evaluation (particularly relating to processor and memory management), security, virtualization, resource allocation and scheduling, and file systems.