Current Semester (Fall 2025)
Introduces the use of a high-level object-oriented programming language as a problem-solving tool, including basic data structures and algorithms, object-oriented programming techniques, and software documentation. Designed for students who have had little or no prior experience with computer programming.
Examines the components of sophisticated multilayer software systems, including device drivers, systems software, applications interfaces, and user interfaces. Explores the design and development of interrupt-driven and event-driven software.
Previous Semesters
Summer 2025, Spring 2025, Fall 2024, Spring 2024, Fall 2024
Introduction to operating system concepts-including system organization for uni-processors and multiprocessors, scheduling algorithms, process management, deadlocks, paging and segmentation, files and protection, and process coordination and communication.
Spring 2025
This course covers in detail the design and implementation of processes, interprocess communication, semaphores, monitors, message passing, scheduling algorithm, input/output, device drivers, memory management, file system design, security and protection mechanisms. The hardware-software interface and the user process-system call-kernel interface are examined in detail. Students modify and extend a multiuser operating system.
Spring 2024
Problem-solving and design using an object-oriented programming language. Introduces a variety of problem-solving techniques, algorithms, and data structures in object-oriented programming.
Fall 2023
Introduction to the internal architecture of computer systems, including micro-, mini-, and mainframe computer architectures. Focuses on the relationship among a computer's hardware, its native instruction set, and the implementation of high-level languages on that machine. Uses a set of assembly language programming exercises to explore and analyze a microcomputer architecture.
Summer 2023, Spring 2023, Fall 2022, Fall 2021, Spring 2021
Basic hardware and software issues of computer organization. Topics include computer abstractions and technology, performance evaluation, instruction set architecture, arithmetic logic unit design, advanced computer arithmetic, datapath and control unit design, pipelining, memory hierarchy, input-output.
Spring 2023, Fall 2022, Spring 2022, Fall 2021, Summer 2021, Spring 2021, Fall 2020, Spring 2020, Spring 2019
Covers the principles and techniques in the design of operating systems. Describes concepts of operating systems in terms of functions, structure, and implementation, particularly emphasizing multiprogramming. Topics include process coordination, deadlocks, memory management, device management, file systems, scheduling policies for CPU, and network and distributed operating systems. Illustrates concepts with examples from existing operating systems.
Fall 2022, Spring 2022, Spring 2021, Fall 2020
This course will study key algorithms relevant to programming intelligent robots with a focus on the following questions: How might one program a robot to estimate the state of the world based on multiple sources of information? How might a robot create plans or control policies for performing tasks? How might a robot learn a control policy directly from experience? The course will cover topics in estimation, control, and planning with applications to robotics including: reinforcement learning, linear optimal control, randomized motion planning, trajectory optimization, Kalman filtering, particle filtering, and selected topics in optimization.
Spring 2020
Examines system architecture with 32- and 64-bit microprocessors. Topics include the design of high-performance computer systems, such as workstations and multiprocessor systems using recent advanced microprocessor. Considers the internal architecture of recent microprocessors, followed by vector processing, memory hierarchy design, and communication subsystems for I/O and interprocessor communication.