CMSC150 - Introduction to Computing

Students learn the fundamentals of computational thinking and apply it to solve problems using the Python programming language. Topics include basic concepts in computing, decision making, iteration, string processing, common data structures (e.g. lists, dictionaries), and object oriented programming. Students will also develop a semester-long project that builds their software building skills using common development tools and version control.

Semesters taught: Fall 2023, Spring & Fall 2024, Spring 2025

CMSC321 - Operating Systems

This course explores the fundamental theory and practice of modern operating systems. Our approach emphasizes the three pillars of an operating system: virtualization, concurrency, and persistence. These pillars are explored with practical programming assignments that provide students with a deeper understanding of the theory and expand their systems programming skills in C. Students also perform independent research into embedded real-time operating systems (RTOS).

Semester taught: Spring 2025

CMSC322 - Software Engineering

Students learn the processes and tools to build high quality software systems. Topics include capturing customer requirements, Agile development processes, UML system modeling, architecture design, and desing patterns. Additionally, students learn how to collaborate with members of a software development team using modern version control and project management tools. A significant software project motivates the learning of the theoretical and practical concepts and provides students with the experience to join industry software teams.

Semesters taught: Fall 2023, Fall 2024

CMSC395 - Introduction to Autonomous Robotics

In this course, students will learn how to model robotic motion and develop algorithms that enable robots to maneuver autonomously in the world. We will explore this exciting field through four modules: modeling, control, perception, and learning. Topics include kinematic and dynamic modeling, navigation with reactive feedback controllers, path planning, sensor fusion and perception, and reinforcement learning. Students will apply these algorithms with small projects throughout the semester. This course will run in a workshop-style, where lecture and lab are integrated into each class session. Prior knowledge in differential equations and probability will be helpful, but not required.

Semesters taught: Spring 2024, Fall 2025 (upcoming)

CMSC340 - Autonomous Robotic Teams (Independent Study)

I maintain an active research independent study that prepares students for summer research in the HIVE Lab. Students engage in closed- and open-ended projects to learn more about autonomous robotics as well as the technologies needed to collaborate with humans in dynamic environments.

Runs every semester!

Back to teaching…