← Back to Home

Where to Go From Here

Pitt Courses to Take To Learn More About How Computer Systems Work

This document provides a list of courses offered at Pitt that focus on the ‘systems’ subfield of computer science. If you enjoyed taking CS 0449, and want to learn more about how the software you write interacts with the physical hardware, consider some of these courses the next time you are scheduling.

Note: Course descriptions and requirements are based on the course catalogue at the time of writing. Please see the latest catalogue for the most accurate information. Also, check out PittCSC’s Course Guide and Scheduling Guide.

TL;DR

Subfield Courses
Architecture CS 1541, CS 1567
Operating Systems CS 1550, CS 1651
Compilers & Programming Languages CS 1621, CS 1622
Parallel Computing CS 1645, CS 1538
Networking CS 1652

Architecture

We spend a lot of time in “systems” on learning how the code you write executes on the underlying hardware. In Computer Architecture, you will take a deeper look at how the hardware operates. Topics in this field include: Instruction Set Architecture (ISA), Memory Layout, Input/Output structure, and more.Computer architecture builds up on what you have learned in this course and CS 447: Computer Organization & Assembly Language.

CS 1541: Introduction to Computer Architecture

CS 1567: Programming and System Design On a Mobile RobotThis course is typically offered only during summer term.

Operating Systems

An operating system is the most important software that runs on a computer. It manages the computer’s memory and processes, as well as all of its software and hardware. It also allows you to communicate with the computer without knowing how to speak the computer’s language.In this course, you used fork() and exec() to manage processes. These system calls (which are provided by the operating system) helps us interface with the hardware in a uniform way, regardless of specific hardware details. Courses in category will focus on how certain abstractions are used to hide the hardware details from the user and how the operating system manages system resources.

CS 1550: Introduction to Operating Systems

CS 1651: Advanced Systems Software

Compilers & Programming Languages

As we began our studies using the C programming language, we briefly discussed the various types of programming languages (such as compiled, interpreted, and bytecode)
Compiling a C Program. Image from UNSW syndey
. This category of courses takes a more in-depth approach at how programming languages are designed and how software such as compilers and interpreters are implemented.

CS 1621: Structure of Programming Languages

CS 1622: Introduction to Compiler Design

Parallel Computing

While processors today are quite powerful, some problems are just too big for a single one of them to solve. Parallel computing is a type of computing architecture in which several processors simultaneously execute multiple, smaller calculations broken down from an overall larger, complex problem.
Parallel Computing. Image from Lawrence Livermore National Laboratory

CS 1645: Introduction To High Performance Computing Systems

CS 1538: Introduction to Simulation

Networking

So far, we have been talking about how the components internal to a single computer work together to solve a problem (or run code). But, how can multiple computers communicate between each other? Networking looks precisely at this issue.

CS 1652: Data Communications and Computer Networks