601.229.02 (F19): Home page
Reference solution for final exam: final_ref_soln.pdf
What is this web page?
This web page supplements Prof. Koehn’s CSF web page. It is mainly intended for Section 02 of the course, taught by David Hovemeyer.
We’ll be using Piazza for Q&A and other important information about the course: https://piazza.com/jhu/fall2019/601229
Readings
Recommended textbooks:
- HCW: How Computers Work, Robert Young, 2009
- PH: Computer Organization and Design, 5th edition, David A. Patterson and John L. Hennessy, 2014
- BO: Computer Systems, 3rd edition, Randal E. Bryant and David R. O’Hallaron, 2016
- CODE: Code, Charles Petzold, 2000
Assignments
Homework assignments are based on assignments designed by Peter Froehlich for his version of the class.
Homework 1: Warmup, due Friday, Sep 13th by 10pm
Homework 2: Digital Logic, due Friday, Sep 20th by 10pm
Solution: HW2_soln.zip
Homework 3: Machine-level Programming, due Friday, Sep 27th by 10pm
Solution: HW3_soln_partial.zip
Homework 4: MIPS, cache simulator, due Monday, Oct 28th by 10pm Tuesday, Oct 29th by 10pm
Homework 5: x86-64 hexdump, due Friday, Nov 8th by 10pm Monday, Nov 11th by 10pm
Homework 6: Internet calculator, due Friday, Nov 22nd by 10pm
Homework 7: Multithreaded Internet calculator, due Friday, Dec 6th by 10pm
Resources
Logisim evolution (digital logic simulator):
- Logisim evolution web page
- Executable jar file download logisim-evolution.jar (requires Java)
- Beginner’s tutorial: for older version of Logisim, but definitely still relevant
- Youtube video #1: shows wiring and testing a very simple circuit
- Youtube video #2: another good introductory video on using Logisim evolution
C64 and 6502 resources: see the C64 and 6502 resources page
Grading
- Each assignment (total of 7): 10%
- Midterm: 10%
- Final exam: 20%
Note also the late days policy. There is no grade deduction for a late submission as long as you are using one of the late days to which you’re entitled.
Schedule
The schedule is tentative and subject to change. Any changes will be announced in class.
Date | Topic | Readings |
---|---|---|
Th Aug 29 | Introduction: Electricity and Circuits (slides, markup) | CODE Chapters 4, 8, 10, 11; HCW page basic 1, basic 4 |
Digital Circuits | ||
Fr Aug 30 | Boolean Algrebra (slides, markup, note about CNF) | CODE Chapter 8, 15 |
Mo Sep 2 | Labor day, no class | |
We Sep 4 | Addition and Subtraction (slides, markup) | CODE Chapter 12-13 |
Fr Sep 6 | Feedback and Flip-Flops (slides, markup, logisim circuits) | CODE Chapter 14 |
Mo Sep 9 | Memory (slides, markup, logisim circuits) | CODE Chapter 16 |
We Sep 11 | Instructions (slides, markup, logisim circuits) | CODE Chapter 17 |
SCRAM | ||
Fr Sep 13 | SCRAM Introduction (slides, markup, logisim circuits) | SCRAM handout |
Mo Sep 16 | SCRAM Instructions (slides, logisim circuits) | |
6502 | ||
We Sep 18 | Introduction (slides, markup) | Reference; Commodore C64 Emulation; Re-engineering the 6502 Video |
Fr Sep 20 | Stack (slides, markup) | JavaScript 6502 assembler and simulator |
Mo Sep 23 | Interrupts and Bus (slides, markup) | 6502 Diagram; Fun Glitch |
MIPS | ||
We Sep 25 | Introduction (slides, markup) | PH 2.1-2.3, 2.5-2.7 |
Fr Sep 27 | Fast Arithmetic (slides, markup) | PH 2.10, 3.3, 3.4 |
Mo Sep 30 | Pseudo Instructions and Functions (slides) | PH 2.8 |
Midterm | ||
We Oct 2 | Midterm Review | Midterm 2016, Midterm 2018, 6502 review |
Fr Oct 4 | Midterm | |
MIPS (continued) | ||
Mo Oct 7 | Pipelining (slides, markup) | PH 4.5-4.6 |
We Oct 9 | Data Hazards (slides, markup) | PH 4.7 |
Fr Oct 11 | Branch Prediction (slides, markup) | PH 4.8-4.9 |
Mo Oct 14 | Cache Basics (slides, markup) | PH 5.1-5.3 |
We Oct 16 | Cache Control (slides) | PH 5.4, 5.8-5.9 |
Fr Oct 18 | Fall break, no class | |
Mo Oct 21 | Cache Policies (slides, markup) | PH 5.7 |
We Oct 23 | Floating Point Numbers (slides, markup) | PH 3.5 |
x86 | ||
Fr Oct 25 | x86 Introduction (slides, markup) | BO 3.1, online links: 1 2 3 4 5 Intel Manual |
Mo Oct 28 | Compiling C code (slides, markup) | BO 3.2-3.6 |
We Oct 30 | Functions and Stack (slides, markup) | BO 3.7 |
Fr Nov 1 | Linking (slides, markup) | BO 7 |
Mo Nov 4 | Process Control (slides, markup) | BO 8 |
We Nov 6 | Work day | |
Fr Nov 8 | Virtual Memory (slides) | BO 9.1-9.5 |
Mo Nov 11 | Virtual Memory II (slides, markup) | BO 9.6-9.9 |
Networks | ||
We Nov 13 | Unix I/O (slides, markup) | BO 10 |
Fr Nov 15 | IP Protocol, Unix Sockets (slides, server.c) | BO 11.1-11.4 |
Mo Nov 18 | Application protocols, HTTP (slides, markup, webserver.zip, webclient.zip) | BO 11.5-11.6 |
Threads and concurrency | ||
We Nov 20 | Concurrency with processes, I/O multiplexing (slides, markup, mp_webserver.zip) | BO 12.1-12.2 |
Fr Nov 22 | Concurrency with threads (slides, markup, mt_webserver.zip, mandelbrot.zip) | BO 12.3 |
Mo Nov 25 | Thanksgiving vacation, no class | |
We Nov 27 | Thanksgiving vacation, no class | |
Fr Nov 29 | Thanksgiving vacation, no class | |
Mo Dec 2 | Synchronizing access to data (slides, synch.zip) | BO 12.4-12.5 |
We Dec 4 | Parallelism, concurrency issues (slides, synch2.zip) | BO 12.7 |
Fr Dec 6 | Final exam review | Fall 2016 final, solutions, Networks/threads review problems, networks/threads solutions |