CS3410 provides an introduction to computer organization, systems programming and the hardware/software interface. Topics include instruction sets, computer arithmetic, datapath design, data formats, addressing modes, memory hierarchies including caches and virtual memory, I/O devices, bus-based I/O systems, and multicore architectures. Students learn assembly language programming and design a pipelined RISC processor. The course is open to any undergraduate who has mastered the material in CS 2110 - Object-Oriented Programming and Data Structures.
Loose prerequisite of CS 2110 - Object-Oriented Programming and Data Structures
C and UNIX Tools & Scripting would be very nice to have
- Basic Digital Logic
- CPU with hazards
- Calling Conventions
- Virtual Memory
- Multicore Architectures
4 projects with a partner that are fairly time consuming
Minimum: 10 hrs/wk
Average: 15 hrs/wk
Your first two major project involve building a processor in Logisim out of logic gates. After that, you’ll be working on a few projects in C. One was Cacheracer, where you write a program that tries to fill up memory as quickly as possible, while competing with another such program via traps and other tools. There are various labs; notably, you exploit a buffer overflow vulnerability in one. The last project in years past was Honeypot, where you and a partner built a program to scan incoming network packets as quickly as possible, competing for the highest MB/s. That has recently been replaced with a project where you implement
Do not take it with CS 3110 - Data Structures and Functional Programming.
C and UNIX Tools are heavily used in this class. The workload can seem intense because they assume that you will easily pick up a working knowledge of C and unix.
Make use of office hours and Piazza to clarify things, and get a head start on projects!