Teaching

I started working as an Undergraduate Teaching Assistant for Georgia Tech’s CS 2110 (Computer Organization and Programming) with the Fall 2017 semester under Prof. Bill Leahy, and I am presently continuing my work in this capacity.

CIOS Survey Results: Overall Effectiveness

  • Fall 2017: 97.3% (4.87 / 5.00)
  • Spring 2018: 94.6% (4.73 / 5.00)
  • Cumulative: 96% (4.80 / 5.00)

Georgia Tech - CS 2110 - Computer Organization and Programming

CS 2110 Computer Organization and Programming is a 2nd year CS course offered at Georgia Tech, with a curriculum starting with simple digital logic, building up the architecture of a modern computer step by step, with steps including finite state machines, a simple microprocessor (the LC-3), and low-level C programming on the GameBoy Advance.

TA responsibilities for this course include teaching three hours of “lecitations” (a portmanteau of lab - recitations, recitation sessions where students are expected and taught to complete programming lab assignments) weekly, as well as holding office hours, preparing homework assignments, (paper) quizzes and “timed labs” (in-recitation programming quizzes), as well as grading submissions for all of the aforementioned assignments.

Course Objectives

  1. To understand the structure and operation of a modern computer from the ground up.
  2. Understand basic hardware concepts: digital circuits, gates, bits, bytes, number representation
  3. Understand the Von Neumann model and the structure and operation of a basic data path
  4. Understand the structure and function of machine language instructions
  5. Understand the structure and function of a symbolic assembly language
  6. Understand basic concepts of computer systems such as the runtime stack, simple I/O devices
  7. Introduce the C language with particular emphasis on the underlying assembly and machine language as well as interaction with hardware.

Course Outcomes

  • Be able to identify and/or construct basic digital structures such as MOS FET logic gates, decoders, multiplexors, adders, memory.
  • Be able to construct a state machine diagram and then implement it as a finite state machine circuit.
  • Understand data representation. Be able to convert numbers between various representations: Binary, octal, decimal, hexadecimal, and IEEE Floating Point.
  • Be able to identify the component parts of the Von Neumann Model of computer and be able to explain the purpose of each component.
  • Be able to write, debug and run assembly language programs including recursive subroutines, traps, basic input/output.
  • Be able to write, debug and run multi-file C programs several hundred lines long using “make” to compile and execute said programs.
  • Be able to utilize (in C programs) proper typing and casting constructs, structs, pointers and arrays, functions, function pointers, dynamic memory allocation and variables of different storage classes (auto, static, volatile, etc.)