Welcome to CIS 2400! We’re super excited to have you here this term!
Announcements
-
Please fill out the course survey. We will use this to facilitate several important aspects of CIS 2400.
Due Next
Calendar
Wellness and Inclusion
It is very important to us that you succeed in CIS 2400. We provide many extra resources to help you.
- Travis and the TAs hold many office hours
- The Ed discussion board, where anonymous and private posts are allowed
- Travis and the TAs can be contacted directly via email
- Meetings with Travis can be scheduled here: https://www.cis.upenn.edu/~tqmcgaha/#meetings
It is also very important to us that you maintain your mental wellness throughout the course. A few points are not worth losing sleep over. Everyone on the course staff is available to chat, and you can always attend office hours for a non-academic conversation if necessary. You can also visit counseling services if you find you need help beyond the course staff. If you have a temporary health condition or permanent disability (either mental health or physical health related), you should contact the Weingarten Center if you have not already. Additionally, if there is something we can do to make your experience better, please let us know.
All participants in the course have a right to a learning environment that feels safe, where you are treated with respect and feel that you can contribute ideas constructively. Put another way, you have the right to an inclusive learning environment.
We want every student to feel that they have a safe and healthy learning environment, and if at any point you feel like this is not the case in any way, we encourage you to let course staff know so that we can help.
Tools
Course Staff
Instructor
Teaching Assistants
References
The following is a list of references that you might find helpful throughout the course.
Course Information
Syllabus – an overview of the course and course policies
Meeting Requests – For requesting meetings with the course instructor
Course Setup
VMWare Install instructions – Instructions for setting up the CIS 2400 virtual machine
PennSim.jar – A copy of the PennSim.jar used for various homeworks, just in case you need to redownload it
Course Texts
Dive Into Systems Textbook – An optional textbook that contains well written information on most things covered in the class
C reference – a reference of features and useful utilites in C.
Linux Man Pages – Contains useful information on user terminal commands (section 1) and C standard library functions (section 3)
LC4 References
LC4 Instruction Sheet – Contains an organized table of all LC4 instructions and their behaviour
LC4 Single Cycle Processor – Shows an high level view of a single-cycle LC4 processor
Control Signals Description – Lists every control signal in LC4, its possible values, and what those different values mean for each control signal.
ALU Internals for LC4 single-cycle – Shows some details for how the ALU would is implemented in this single cycle LC4 processor.
Schedule
L00 | Wed, Aug 31 |
Introduction and Binary
[ pdf
]
Course administrivia. Everything is Bits. Binary/Decimal conversions. Hexadecimal. ASCII. Finite Length Integers.
|
||
:( | Mon, Sep 05 | No Class | ||
L01 | Wed, Sep 07 |
2's Compliment, Overflow, Floats
[ pdf
]
2's Compliment, arithmetic operations, integer overflow, IEEE floats (start)
|
||
Survey00 (Pre-Semester Survey) due @ 11:59 pm on Fri, Sep 09 | ||||
Check-in00 (Binary Representation) due @ 04:59 pm on Mon, Sep 12 | ||||
L02 | Mon, Sep 12 |
Rounding, Logical Op's, Boolean Algerbra
[ pdf
]
IEEE floats (cont.), Logical operators, Shifting, Boolean Algerbra & Simplification
|
||
R00 |
Tue, Sep, 13 Wed, Sep 14 |
Recitation00: Binary Representation [ slides ]
2C, Hexadecimal, IEEE Floats
|
||
L03 | Wed, Sep 14 |
Intro to CMOS
[ pdf
]
Brief Circuits & Physics, Introduction to CMOS transistors, Designing CMOS Circuits (start)
bonus_transistor_internals.pdf
|
||
hw00 (Binary Representation Quiz) due @ 11:59 pm on Fri, Sep 16 | ||||
Check-in01 (Logic & CMOS) due @ 04:59 pm on Mon, Sep 19 | ||||
L04 | Mon, Sep 19 |
Designing CMOS, Gates, PLAs
[ pdf
]
Designing CMOS (cont.), Gates, PLAs, Gate Delays & Other physical world concerns
|
||
R01 |
Tue, Sep, 20 Wed, Sep 21 |
Recitation01: Boolean Algebra & VM [ slides ]
Boolean Algebra, Truth Tables, VM Setup & Terminal Demo
|
||
L05 | Wed, Sep 21 |
Combinational Logic
[ pdf
]
Incrementer, Adder, Subtracter, Muxes, Multiplier
|
||
hw01 (bits.c) due @ 11:59 pm on Fri, Sep 23 | ||||
Check-in02 (Gates & Combinational Logic) due @ 04:59 pm on Mon, Sep 26 | ||||
L06 | Mon, Sep 26 |
Sequential Logic
[ pdf
]
SR Latch, D Latch, Clock, D Flip Flops
|
||
R02 |
Tue, Sep, 27 Wed, Sep 28 |
Recitation02: Transistors & Gates [ slides ]
Transistors, CMOS Logic & Design, PLA's, Gates
|
||
L07 | Wed, Sep 28 |
Memory: Heirarchy, Registers
[ pdf
]
Flip Flops -> Memory, Memory Heirarchy, Registers, LC4 ISA (start)
|
||
hw02 (Combinational Logic Written) due @ 11:59 pm on Fri, Sep 30 | ||||
Check-in03 (LC4) due @ 04:59 pm on Mon, Oct 03 | ||||
L08 | Mon, Oct 03 |
LC4 ISA
[ pdf
]
LC4 examples, labels, memory, LC4 instruction overview
|
||
R03 |
Tue, Oct, 04 Wed, Oct 05 |
Recitation03: Sequential Logic [ slides ]
Latch, Flip Flop, Gate Delay, Clock & Timing
|
||
L09 | Wed, Oct 05 |
PennSim, LC4 Control Structures, LC4 Memory
[ pdf
]
PennSim, LC4 Control Structures, Pointers, Memory, Strings, Arrays
|
||
hw03 (Sequential Logic Written) due @ 11:59 pm on Fri, Oct 07 | ||||
L10 | Mon, Oct 10 |
LC4 Single Cycle Processor
[ pdf
]
LC4 Single Cycle Processor & Control Signals
|
||
R04 |
Tue, Oct, 11 Wed, Oct 12 |
Recitation04: LC4 [ slides ]
LC4 ASM Design & Practice, Penn Sim Demo
|
||
Check-in04 (LC4, Pointers, Memory) due @ 04:59 pm on Wed, Oct 12 | ||||
L11 | Wed, Oct 12 |
Processor Wrapup & OS Intro
[ pdf
]
LC4 Single Cycle Processor Discussion and Operating System Start
|
||
hw04 (LC4 Programming) due @ 11:59 pm on Fri, Oct 14 | ||||
Check-in05 (LC4 Single Cycle) due @ 04:59 pm on Mon, Oct 17 | ||||
L12 | Mon, Oct 17 |
I/O and subroutines in LC4
[ pdf
]
I/O in LC4 (start)
|
||
R05 |
Tue, Oct, 18 Wed, Oct 19 |
Recitation05: Datapth [ slides ]
Single-cycle Processor Components, Control Signals
|
||
L13 | Wed, Oct 19 |
OS in LC4
[ pdf
]
I/O in LC4 (cont.), Subroutines,OS in LC4
|
||
hw05 (Control Signals C Program) due @ 11:59 pm on Fri, Oct 21 | ||||
L14 | Mon, Oct 24 |
Midterm Review
[ pdf
]
Midterm Practice Questions made by Travis
|
||
R06 |
Tue, Oct, 25 Wed, Oct 26 |
Recitation06: Midterm Review [ slides ]
Midterm Review
|
||
E00 | Wed, Oct 26 | Midterm Exam 05:15 pm - 06:45 pm @ Chem 102 [exam info] | ||
L15 | Mon, Oct 31 |
C: Basics & Pointers
[ pdf
]
C vs Java, Control Structures, Printing, Pointers, Arrays, Strings
|
||
R07 |
Tue, Nov, 01 Wed, Nov 02 |
Recitation07: OS & C [ slides ]
OS Traps, Directives, Strings, Pointers, Intro C
|
||
Check-in06 (LC4 I/O and OS) due @ 04:59 pm on Wed, Nov 02 | ||||
L16 | Wed, Nov 02 |
C: Memory
[ pdf
]
Global Memory, The Stack, The Heap, Structs, Creating Datastructures
|
||
hw06 (Video Game) due @ 11:59 pm on Fri, Nov 04 | ||||
Check-in07 (C & Memory) due @ 04:59 pm on Mon, Nov 07 | ||||
L17 | Mon, Nov 07 |
C: Compilation & Tools
[ pdf
]
C Pre-Processor, gcc, Header Files, Makefiles, valgrind, gdb
|
||
R08 |
Tue, Nov, 08 Wed, Nov 09 |
Recitation08: Heap & C Tools [ slides ]
The Heap, Structs, Makefiles, GDB, Valgrind
|
||
L18 | Wed, Nov 09 |
C: Command Line Args & File I/O
[ pdf
]
Command Line Arguments, File I/O with stdio.h, binary files, endianness
|
||
Survey01 (Mid-Semester Survey) due @ 11:59 pm on Wed, Nov 09 | ||||
hw07 (Stack & Stack Calculator) due @ 11:59 pm on Fri, Nov 11 | ||||
Check-in08 (LC4 Memory) due @ 04:59 pm on Mon, Nov 14 | ||||
L19 | Mon, Nov 14 |
Stack & Globals in Detail, Calling Conventions (start)
[ pdf
]
Accessing Memory, Calling Conventions, Caller vs. Callee
|
||
R09 |
Tue, Nov, 15 Wed, Nov 16 |
Recitation09: Binary Files [ slides ]
Bitwise Operations, Endianness, C File I/O, hexdump
|
||
L20 | Wed, Nov 16 |
Calling Conventions (cont.), Implications of the Stack
[ pdf
]
Calling Conventions (cont.), Stack Frames, Overhead & Runtime Concerns
|
||
hw08 (Disassembler) due @ 11:59 pm on Fri, Nov 18 | ||||
L21 | Mon, Nov 21 |
Translating C to ASM
[ pdf
]
C to ASM, Control Structures
|
||
R10 |
Tue, Nov, 22 Wed, Nov 23 |
Recitation10: Relaxed Office Hours [ slides ]
HW8 Office hours
|
||
:( | Wed, Nov 23 | No Class | ||
Check-in09 (LC4, C, Memory, Stack) due @ 04:59 pm on Mon, Nov 28 | ||||
L22 | Mon, Nov 28 | History, Modern Processors, Modern ISAs [ pdf ] | ||
hw09 (cancelled) due @ 11:59 pm on Mon, Nov 28 | ||||
R11 |
Tue, Nov, 29 Wed, Nov 30 |
Recitation11: J Compiler [ slides ]
J Compiler Overview
|
||
:( | Wed, Nov 30 | No Class | ||
hw10 (Compiler Pt. 1) due @ 11:59 pm on Fri, Dec 02 | ||||
L23 | Mon, Dec 05 | Special Topics: Java vs C, C tips [ pdf ] | ||
R12 |
Tue, Dec, 06 Wed, Dec 07 |
Recitation12: J Compiler Pt. 2 [ slides ]
Calling Conventions, J Compiler Pt.2 overview
|
||
L24 | Wed, Dec 07 | Course Wrap-Up [ pdf ] | ||
hw11 (Compiler Pt. 2) due @ 11:59 pm on Fri, Dec 09 | ||||
L25 | Mon, Dec 12 | Final Exam Review [ pdf ] | ||
E01 | Thu, Dec 15 | Final Exam 06:00 pm - 08:00 pm @ MEYH B1 [exam info] |
Credits
Credit to Professor Adam Blank (they/them), who gave Travis McGaha this website template :D
More on Adam can be found on their website here.