Syllabus

Lectures on Tuesday are from 4 pm to 7 pm; lectures on Friday are from 2 pm to 5 pm.

The calendar is subject to change. Anything posted in the future is certainly tentative. Also, anything posted in the recent past may not be correct if I haven’t updated it yet.

Tue April 21, 2020 (Session 1)

  • CircuitVerse: 8-bit Full Adder.

  • Numerals and numbers, positional system for unsigned integers.

Fri April 24, 2020 (Session 2)

  • CircuitVerse: Integrated 8-bit Adder/Subtractor.

  • CircuitVerse: Multiplexer.

  • Carry flag, zero flag

Tue April 28, 2020 (Session 3)

  • CircuitVerse: ALU (Arithmetic logical Unit)

  • Registers and register banks

  • Encoding instructions in a bit pattern.

Tue May 1, 2020

Holiday

Tue May 5, 2020 (Session 4)

  • Signed integer, two's complement.

  • Overflow flag, sign flag.

  • CircuitVerse: Status register with zero flag, carry flag, overflow flag and sign flag

Fri May 8, 2020 (Session 5)

  • Using the ULM virtual machine

Tue May 12, 2020 (Session 5)

  • More formal description of the ULM

  • Sequential execution of a program.

Fri May 15, 2020 (Session 6)

  • First steps with the ULM assembler

  • Using assembly instructions as an equivalent but more expressive notation for machine instruction.

Tue May 18, 2020 (Session 7)

  • Lexical analysis, syntactic analysis and code generation.

  • Example: ulmcalc-step1, ulmcalc-step2

Fri May 22, 2020 (Session 7)

  • Symbol tables, semantic error detected during code generation.

  • Example: ulmcalc-step3

Tue May 26, 2020 (Session 8)

  • Roadmap for the next sessions (and the bigger goal behind that)

  • Learning by doing: Project for computing the factorial of an unsigned integer

  • Assignment: factorial returned by exit code

  • Assignment: read an unsigned integer

Fri May 29, 2020 (Rest of

Session 8)

  • Assignment: print an unsigned integer

Notes:

  • Session 5 was covered on Fri May 8, 2020 (the part about using the ULM virtual machines) and Tue May 12, 2020 (the part with formal description of the ULM). As these topics are so closely related I did not want to split this session formally into two sessions.

  • Session 8 contains materials for two lectures. And most of it would be in-class programming assignments. Again, because I think it belongs together I keep it in one session.