Designing a systems programming course presents unique challenges and opportunities. We spoke with Kevin McDonnell, a seasoned educator from Stony Brook University. His course structure and pedagogical insights offer a compelling blueprint for educators aiming to navigate this field.
Understanding the Course Structure
McDonnell's course at Stony Brook encompasses two critical components: systems programming, and computer organization and architecture. The overarching learning objectives are designed to equip students with foundational skills, such as the ability to:
- Determine the Machine level representations of primitive and structured data types.
- Determine the correspondence of program constructs written in C and in Assembly Language.
- Implement non-trivial algorithms and both static and dynamic data structures in the C.
"These are the main things that we emphasize," McDonnell explains. These objectives not only underscore the importance of low-level programming proficiency but also emphasize the practical applications in real-world system development.
Assignments and Assessment Strategy
The course contains five assignments: four in C, and one in Mips Assembly language. Kevin starts by covering the basics of C, moving on to pointers and dynamic data structures, and ending with Assembly, so students have some exposure to low level programming. Assessments are predominantly formative but take place over the course of two weeks. These larger projects give students the opportunity to grasp the content of the course.
.png)
%20(800%20x%20525%20px)%20(800%20x%20525%20px)%20(11).png)
%20(800%20x%20525%20px)%20(800%20x%20525%20px)%20(10).png)
%20(800%20x%20525%20px)%20(800%20x%20525%20px)%20(9).png)