CSCI 410: Elements of Computing Systems

Winter/Spring 2012

May 2: Lecture 41, Semester Wrap-Up

You should be working on Project 12

Where have we been? Where are we headed?

What possible mental paradigms are we currently facing?

What are the next potential layers of abstraction?

What's "archaic" about the way we program software today? What can you do about it?

Assignment: Complete Project 12.

Apr 30: Lecture 40, Operating System, Memory, Array, Sys

You should be working on Project 12

Where have we been? Where are we headed?

What possible mental paradigms are we currently facing?

What are the next potential layers of abstraction?

What's "archaic" about the way we program software today? What can you do about it?

Assignment: Complete Project 12.

Apr 27: Lecture 39, Operating System

You should be finishing Project 11

Fundamentally, what is an "operating system?"

What is the Jack OS like?

How might the OS abstract/expose memory allocation from the programmer?

Assignment: Complete Project 12 (Memory, Array, Sys).

April 25: Lecture 38, From RPN to Software Engineering

You should be working on Project 11.

Who "invented" RPN? How is it related to the stack?

What were some early computers that were stack machines?

Who else in CS history was influenced by RPN?

Who "invented" Software Engineering?

What are Dijkstra's EWDs?

Assignment: Finish Project 11.

April 20: Lecture 36, Code Generation

You should be working on Project 11.

What are the main tasks of code generation?

How are expressions and flow control statements handled?

How is the symbol table used to generate VM instructions?

What are some important things to notice about the Jack compiler specification?

Assignment: Continue Project 11

April 18: Lecture 35, Code Review, Symbol Table Tips

You should be working on Project 11.

Code review (tokenization and parsing).

What is the role of the symbol table and why do we need it?

What qualities of variables should we track?

How might you first approach Project 11, implementing the symbol table?

Assignment: Continue Project 11

April 16: No Lecture

You should have finished Project 10.

Assignment: Begin Project 11.

April 13: Lecture 34, Parsing Tips, Intro to Code Generation

You should be finishing the 'expressionless' parser for Project 10.

What problems are you facing with the parser?

How have we sidestepped theories of formal languages and computational linguistics?

What is the analysis-synthesis paradigm underlying most compilers and why does it exist?

What are the main compilation tasks after tokenizing and parsing?

How might you accommodate semantics and scope via a symbol table?

Assignment: Finish Project 31 10 (parsing).

April 11: Lecture 33, Parsing

You should be working on the parser for Project 10.

Parsing code review and algorithm comparison.

What are some benefits and drawbacks to particular parsing strategies?

How might you use a breakpointer and interactive debugger to help speed up the debugging process?

Assignment: Continue Project 10 (expressionless parsing).

April 9: Lecture 32, Tokenization Tips & Parsing

You should have finished the tokenizer for Project 10.

Are programming languages typically context-dependent or context-independent? What about human languages?

What is the Jack grammar like?

How might you approach a general algorithm for parsing tokens into a parse tree?

What areas of the algorithm involve recursion?

How might you create a parse tree from tokens?

Assignment: Continue Project 10 (expressionless parsing).

April 6: Lecture 31, Intro to Compilers

You should have finished Reading 17 and be working on Project 10. Hand in Quiz 17.

What are the primary steps in typical compilation?

What is tokenization?

What is parsing?

What are the differences between context-free and context-dependent grammars?

What are terminals and non-terminals?

What is a parse tree?

What is recursive-descent parsing?

What does it mean to be an LL(0) grammar?

What is the Jack grammar like?

Why should we first represent tokenization as XML?

What is XML? What characters must be escaped and why? (<, >, etc.)

For the first phase of our project, what must the tokenizer do?

What are some strategies for tokenizing Jack code?

Assignment: Continue Project 10.

April 4: Lecture 30, Game Day! (and Jack Review)

You should have finished Project 9.

(game reviews)

Jack review.

Introduction to the compiler project

Assignment: Reading 17, Quiz 17, and continue Project 10.

Apr 2: No Class (Canceled)

You should have finished Project 9.

Begin Project 10.

March 30: No Class (E-Days)

Finish Project 9.

March 28: Lecture 29, Game Specification Reviews, Workflow Questions

You should be working on Project 9.

How does the embracing of constraints lead to creative problem solving?

What are the Jack syntax and the Jack Standard Library like?

What should our git workflow be like for our project team?

(Spec doc review)

Assignment: Finish Project 9.

March 26: Lecture 28, Software Engineering: What? and How?

You should be working on Project 9 (spec doc).

What is engineering? How is it difference from a science?

What is software engineering?

What is SE's context within engineering history?

How do we engineer quality software?

Assignment: Continue Project 9.

March 23: Lecture 27, Constraints & Creativity, On Being a Developer

You should be working on Project 9 (hello world, spec doc).

What is one of the biggest unsolved problems in managing software projects? (accurate estimates)

How does software become late? (one day at a time)

What are two primary options when faced with a deadline? (push the deadline or cut features)

What are some common tools used by the best postmodern developers?

What challenges does team-based collaboration introduce into the software development process?

What are some common software development paradigms?

What is a screen specification?

How should you use bug trackers to coordinate development teams?

What are some common workflows with git you should follow?

What are some seminal texts in software engineering?

Assignment: Reading 16, Quiz 16 and continue Project 9 (hello world, screen specification).

March 21: Lecture 26, Intro to Jack, Learning a New Language

You should have finished Project 8.

How do you compile and run a Jack program?

What common features and terminology do all modern computer languages share?

What are the Jack syntax and the Jack Standard Library like?

How might you use the example programs to explore the features/constraints of Jack?

Assignment: Begin Project 9.

March 9: Lecture 25, VM Program Flow

You should be working on finishing Project 8, passing the BasicLoop and FibonacciSeries tests.

Specific assistance with VM program flow implementations.

How might you implement the stack frame management?

How might you implement the VM's function call/return protocol?

What are some common pitfalls when implementing call and return?

Assignment: Finish Project 8, passing the SimpleFunction, FibonnaciElement and StaticsTest tests.

March 7: Lecture 24, Program Flow & Function Implementation

Your VM for Project 8 should pass BasicLoop and FibonacciSeries tests.

What work must be done by your VM to handle label, goto and if-goto?

What does each stack frame need to store?

What do each of the VM function commands (function, call, return) and their parameters mean?

Assignment: Project 8, passing BasicLoop and FibonacciSeries tests.

March 5: Lecture 23, Program Flow & Functions

You should be finishing Project 7.

How does flow control work?

How does function declaration, calling and returning work?

What tasks does a compiler need to handle in order to provide functions to you, the programmer?

Why/how does stack processing complement the function call/return protocol?

What is a stack frame? What do we store in one?

How do we manage the local state of callers and functions in the chain?

Where does the notion of main programs come from?

Assignment: Finish Project 7, passing BasicTest.tst, PointerTest.tst and StaticTest.tst. Begin Project 8.

March 2: Lecture 22, Virtual Machines

You should be working on Project 7 milestone 2 (passing SimpleAdd.tst and StackTest.tst).

What are some examples of VMs in the wild?

What does it mean to pop temp 0, pop pointer 0, pop static 3, etc?

What are some ways of parsing the VM commands?

How might you "templatize" the assembly instructions for a particular VM command?

Review: push constant x, add, and other arithmetic commands.

Assignment: Finish Project 7, passing BasicTest.tst, PointerTest.tst and StaticTest.tst.

Feb 29: Lecture 21, The Hack Virtual Machine, Virtual Memory Addresses

You should have finished Project 07 milestone 1 (completed the basic driver).

How does the Hack VM work?

What are the Hack VM commands like? What do they do?

How might the Hack VM commands translate to Hack Assembly instructions?

What are virtual memory address segments?

How might you control the stack pointer, in assembly?

How might you implement a push constant x command in assembly?

How might you implement the add command in assembly?

What do the built-in memory labels (SP, LCL, THIS, THAT, TEMP, etc) have to do with your VM translator?

What are the virtual memory segments, really?

Assignment: Continue Project 7, passing SimpleAdd.tst and StackTest.tst.

Feb 27: Lecture 20, Assembler Review, Virtual Machines

You should have finished Project 6.

What were some challenges with the assembler?

How do our assembly language and assembler compare to commercial implementations?

What is a virtual machine? Why include one in our computer stack?

What is a stack?

Introduction to the Hack virtual machine.

Assignment: Read TECS chapter 7 and begin Project 7.

Feb 24: Lecture 19, Assembler Implementation

You should have finished Reading 15 and be working on Project 6. Hand in Quiz 15.

How might we implement the assembler? (Strategy tips)

Ugly babies! (peer code review)

Assignment: Finish Project 6.

Feb 22: Lecture 18, Character Symbols & ASCII; Creating an Assembler

You should have begun Project 6.

CPU implementation review

How are letters represented in binary?

What are ASCII, EBCDIC, and UTF8?

What is an assembler?

What are an assembler's two main tasks?

What is the Hack machine language specification?

What is a two-pass assembler?

Project overview

Assignment: Reading 15, Quiz 15. Continue Project 6.

Feb 20: No Class, Yay!

You should have finished Project 5.

Assignment: Begin Project 6.

Feb 17: Lecture 17, The Hack CPU & Hardware Review

You should have finished Reading 14 and be working on Project 5. Hand in Quiz 14.

How does the CPU need to work? How might you build it?

How might you implement the CPU control logic?

How might you handle the JUMP logic in the CPU?

Assignment: Finish Project 15 (ecs05).

Feb 15: Lecture 16, Buses, The Hack Memory Implementation

You should have finished Reading 13 and begun Project 5. Hand in Quiz 13.

What is a bus?

What sort of signals are sent over a bus?

What is Direct Memory Access? What benefits does it provide?

Hack Memory implementation review.

CPU tests discussion.

Assignment: Reading 14, Quiz 14 and continue Project 5.

Feb 13: Lecture 15, Semiconductors, Transistors, Integrated Circuits, Microprocessors and the Hack Computer Specification

You should be have finished Reading 12 and Project 4. Hand in Quiz 12.

A Brief History of Computing

What were some drawbacks of using vacuum tubes instead of relays?

What is a semiconductor?

What is a transistor and how does it work?

What is an integrated circuit?

A comparison of the Intel 8080, Motorola 6800, modern processors, and the Hack instruction sets.

What is the Hack architecture like?

How does the Memory need to work? How might you build it?

Assignment: Reading 13, Quiz 13 and Project 5.

Feb 10: Lecture 14, More Features of the Hack Assembly Language

You should be working on Project 4.

What other symbols are at our disposal in Hack assembly?

How do variables and labels work in Hack?

Hack exercises & assembly tips.

Project 4 tips & walkthrough.

Assignment: Reading 12, Quiz 12. Complete Project 4.

Feb 8: Lecture 13, Hack Assembly Language

You should have finished Reading 11 and be working on Project 4. Hand in Quiz 11.

Where are we in the abstraction stack?

What is the design purpose of any assembly lanugage?

What are some general things every assembly language can do?

What is the von Neumann architecture?

How is the Hack platform designed?

How many registers do we have at our disposal?

What is an A-instruction?

What is a C-instrcution?

How are A and C instructions represented in machine code?

What other symbols are at our disposal in Hack assembly?

How do we interact with I/O devices like the screen and keyboard?

Project tips, assembly exercises.

Assignment: Continue Project 4.

Feb 6: Lecture 12, Automation and Machine Language

You should have finished Project 3, Reading 10 and you should be able to explain how to build parts of a computer from symbolic thought to flip-flops & memory. Hand in Quiz 10.

How might you build an automated sequential adding machine?

How might you expand this machine's capabilities / instruction set?

What is an accumulator, really?

What is an opcode?

What is an instruction fetch? Instruction cycle?

What are the different components of an instruction?

How might you implement a loop with opcodes?

What is a CPU? What does it mean to have a 32-bit CPU?

What is machine language?

What is assembly language?

What is a computer?

Assignment: Reading 11, Quiz 11 and Project 4.

Feb 3: Lecture 11: Snow Day, No Class

You should be working on Reading 10, Quiz 10, and Project 3.

Assignment: Think about everything we've built and be able to explain it. Have a long conversation with a caveman or stranded islander, explaining how everything works, from the bottom up.

Feb 1: Lecture 10, An Assemblage of Memory

You should have finished Reading 9. Hand in Quiz 9.

Implementation review: ALU

What is memory?

What is a 1-bit register? How might you create one?

How would you build an 8-bit register?

What does it mean to address memory?

How can you use MUX and DMUX to serve as address selectors?

How might you assemble larger memory units from smaller ones?

Assignment: Reading 10, Quiz 10. Continue Project 3.

Jan 30: Lecture 9, Feedback, Flip-Flops, Frequency Dividers & Counters

You should have finished Reading 8 and Project 2. Hand in Quiz 8.

How might you create a physical buzzer using a relay?

How do you create a simple oscillator?

How do you measure the period, cycle and frequency of an oscillator?

Who invented the flip-flop, and what is 'special' about this kind of circuit?

How might you build an RS latch?

What is the clock? What does it mean for a chip to be clocked?

How does a level-triggered RS flip-flop work?

How does a level-triggered D flip-flop work?

What's does all this out(t)=in(t-1) stuff mean?

How might you build a simple multi-number adding machine?

How does an edge-triggered D flip-flop work?

How might you build a binary counter?

Assignment: Reading 9, Quiz 9 and Project 3.

Jan 27: Lecture 8, Combinatorial Chips

You should have finished Reading 7. Hand in Quiz 7. You should have implemented everything in Project 2 except the ALU.

Why does the hexadecimal number system conveniently complement bytes?

What is the hex shorthand for an 8, 16, 32, or 64-bit binary number?

Implementation review: HalfAdder, FullAdder, Add16, Inc16.

How might you build an ALU?

Assignment: Reading 8, Quiz 8. Review TECS 35-40 and complete ALU Worksheet (optional). Complete Project 2 (build the ALU).

Jan 25: Lecture 7, Binary Subtraction

You should have finished Reading 6 and be working on Project 2. Hand in Quiz 6.

What are three steps (using nine's complement) for subtracting without borrowing?

How can you quickly find the one's complement of a binary number?

How can we represent negative binary numbers?

How can you quickly find the two's complement of a binary number?

What must we beware of when using using a two's complement system?

Using a two's complement system, can the adding machine in Code be used to display negative numbers?

How can we combine simple binary/Boolean operations in a two's complement system to accomplish higher-level operations?

Assignment: Reading 7, Quiz 7. Continue Project 2.

Jan 23: Lecture 6, Binary Addition

You should have finished Reading 5 and Project 1. Hand in Quiz 4.

Implementation review: Not, And, Or, Xor, Not16, And16, Or16, Or8Way, Mux, DMux, Mux16, Mux4Way16, Mux8Way16, DMux4Way, DMux8Way.

How might you create a binary adding machine?

What logic gates match the truth tables for sum and carry bits?

How might you construct a half adder? And a full adder?

What is ripple-carry and how does it affect adder performance?

Assignment: Reading 6, Quiz 6 and Project 2.

Jan 21: Lecture 5 (optional), Implementing Logic Gates, Multi-Bit Gates

You should have finished Reading 4. Finish Project 1.

Implementation tips: Mux, DMux, Not16, And16, Or16, n-Way gates.

How does HDL represent the physical wiring of our chips?

How do you create multi-bit chips with Hack HDL?

Assignment: Reading 5.

Jan 18: Lecture 4, Logic and Switches, Logic Gates, Boolean Function to Hardware Implementation

You should have finished Reading 3. Hand in Quiz 3. Continue Project 1.

What is logic?

How does Boolean algebra work?

How might you implement a boolean test as an electric circuit?

What property do boolean expressions and switch "networks" share? (they can be simplified)

What is a logic gate?

What two things can a relay do? (amplify, switch)

What is a double-throw relay?

What is an OR, AND, NOR, NAND, inverter and buffer?

What is DeMorgan's law? How is it related to inverters, OR, AND, NOR and NAND gates?

What is a multiplexer? What is a demultiplexer?

How can you distill the "canonical form" of a boolean function from a truth table?

What is one methodical way of implementing a chip from specification?

Assignment: Reading 4, Quiz 4.

Jan 16: Lecture 3, Number Systems, Base-10 to Base-2, Bits

You should have finished Reading 2 and Project 0. Hand in Quiz 2.

What is a symbolic number system?

How do positional number systems work?

What's so great about ten?

What is meant by a numeric system's base?

How do you convert between binary and decimal?

What is special about binary numbers and switches?

What is a bit?

How many bits do you need to represent N codes?

How do UPC bar codes work?

How might you represent Morse code or Braille as bits?

Assignment: Reading 3, Quiz 3 and Project 1.

Jan 13: Lecture 2, Electric Circuits, Long Circuits & Telegraph System

You should have finished Reading 1 and be almost done with Project -1. Hand in Quiz 1.

What is an electric circuit? What does ήλεκτρον (electron) mean in Greek?

Vocab: anode, cathode, series, parallel, conductors, resistors, insulators.

What are voltage, amperes, resistance and watts?

Who is credited with the above terms, and how do you calculate them?

What is a common? What is a ground?

What problem did early telegraph installers face?

What was the first message sent via telegraph?

What is a relay and how does it work?

Project demonstration.

Assignment: Reading 2, Quiz 2 and Project 0.

Jan 11: Lecture 1, Hello World (01001000 01100101 01101100 01101100 01101111 00100000 01010111 01101111 01110010 01101100 01100100)

You should have purchased the textbooks and be prepared for class.

Introductions.

What is a computer? (to be continued)

What is symbolic thought? What is a code?

Who invented Morse code and when?

How might you construct a morse-to-alpha table?

Is Morse code binary? Why?

What preceded Braille? Who created the Braille code and when? Where did he get the idea?

Is Braille binary? Why?

Assignment: Reading 1, Quiz 1 and Project -1.

SYLLABUS | FORUM | CONTACT