Skip to content Skip to navigation

01:198:214 - Systems Programming

This course teaches students how to think about, build, debug, and test large computer programs. The course stresses learning how to use tools such as debuggers, profilers, source version control systems, and integrated development environments as an essential part of developing large programs. The course also stresses the understanding of how programs execute on today's computers and how to measure and optimize performance. Programming will be in C on Unix systems to introduce students to a new programming eco system, as well as enable the mapping of high-level language constructs to the underlying machine.


If you are currently enrolled in 198:211, you will need a prereq override to register for 198:214.

01:198:112; 01:198:211 (or currently enrolled).
Please note that courses for which a student has received a grade of D cannot be used to satisfy prerequisite requirements.
Systems programming in C and Unix:
- C programming
- Memory management and the C memory model
- System calls
- I/O
- Caching
- Multi-threaded programming
- Shell scripts
Software development:
- Performance (space and time) analysis and measurement
- Debugging
- Testing
- Performance optimization
- IDE (e.g., Eclipse)
- Source version control (e.g., CVS)
- Debugger (e.g., gdb)
- Memory errors (e.g., valgrind)
- Profiling (e.g., gprof, valgrind)
Expected Work: 

Large programming project spread across several parts

Learning Goals: 
Computer Science majors ...
  • will be prepared to contribute to a rapidly changing field by acquiring a thorough grounding in the core principles and foundations of computer science (e.g., techniques of program design, creation, and testing; key aspects of computer hardware; algorithmic principles).
  • will acquire a deeper understanding on (elective) topics of more specialized interest, and be able to critically review, assess, and communicate current developments in the field.
  • will be prepared for the next step in their careers, for example, by having done a research project (for those headed to graduate school), a programming project (for those going into the software industry), or some sort of business plan (for those going into startups).
Course Type: 
Course Name: 
Systems Programming