Skip to content Skip to navigation

Systems Programming

01:198:214

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.

Credits: 
4

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

Prerequisite: 
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.
Topics: 
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
 
Tools: 
- 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).
Semester: 
Fall
Course Type: 
Undergraduate

Check the University Schedule of Classes to see if this course is open.

Request an Special Permission Number here if the class is full.