Linux Internals.
Operating system design and implementation
as illustrated in the Linux kernel source code.
Project work involves modifying the kernel and
observing the effects.
Prerequisites: data structures, assembly language,
computer architecture, and an advanced programming
course or equivalent experience in C or C++.
Computer Architecture and Assembly Language Programming.
This course presents the essential properties of computer hardware
insofar as computer programming is concerned,
using low-level assembly language programming as the vehicle for exploring
these properties.
Topics:
the CRISC assembly language for the CRISP virtual machine;
general properties of assembly languages;
the relationship between assembly languages and high level languages;
representation of integer and floating point quantities;
and execution time of programs.
Programming projects involve the CRISC assembly language
using its associated simulator.
Prerequisite: data structures.
Computing on the Internet.
Computing on the Internet is a technical introduction to the Internet,
to computers, and to computer science.
The course is suitable for all students, including those with
minimal prior exposure to computers or the Internet.
Prerequisites: none.
Compilers.
This course conveys an understanding of compilers
and of the semantics and implementation of high-level programming languages.
It acquaints students with some important ideas and algorithms
which have widespread applicability.
A programming project results in a working compiler for a
useful subset of the C programming language.
Prerequisites: previous exposure to
programming language semantics,
formal languages and grammars,
and assembly language.
Operating Systems.
We study the mechanisms used to create the timesharing effect.
Through this study we see some of the special issues that arise
for concurrent programs running in a shared-memory environment.
We will also survey some major ideas in operating system design such
as protection, naming, and file system organization.
Coursework includes a semester-long programming project writing
an operating system kernel.
Prerequisites: computer architecture and one further course
in computer science.
Parallel Computation.
The essential properties of parallel machines,
the development of parallel algorithms,
and project work running and analyzing programs.
Prerequisites: data structures and algorithms.
Data Structures.
Semantics of C and C++, lists, trees, hashing, recursion.
Prerequisites: introductory programming.
Computer Organization.
Logic design, central processor organization,
microprogrammed control, pipelining,
arithmetic, instruction set design, supercomputers, and parallel computers.
Prerequisite: computer architecture, assembly language programming.