Revised December 11, 2013

CS 241: Foundations of Sequential Programs


General description

CS 241 covers the relationship between high-level programming languages and the computer architecture that underlies their implementation. Students learn the fundamentals of the compilation of computer programs to machine-executable code and how to implement simple versions of relevant algorithms. The following topics are discussed:

Logistics

Audience

Normally available

Related courses

For official details, see the UW calendar.

Software/hardware used

Typical reference(s)

Required preparation

At the start of the course, students should be able to

Individual instructors may choose to use Scheme in addition to C/C++. Assignments written in Scheme may be at the level indicated above for C/C++ (mutatis mutandis). Prior knowledge of Scheme is not required.

Learning objectives

At the end of the course, students should be able to

Note: When writing programs, students must be able to design, code, debug, test, and successfully run the programs.

Typical syllabus

Machine architecture and assembly language (6 hours)

Assemblers, linkers, and loaders (6 hours)

Regular languages and scanning (5 hours)

Context-free languages and parsing (8 hours)

Semantic Analysis and Code generation (6 hours)

Runtime organization and data layout (5 hours)