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
- To understand the structure and operation of a modern computer from the ground up.
- Understand basic hardware concepts: digital circuits, gates, bits, bytes, number representation
- Understand the Von Neumann model and the structure and operation of a basic data path
- Understand the structure and function of machine language instructions
- Understand the structure and function of a symbolic assembly language
- Understand basic concepts of computer systems such as the runtime stack, simple I/O devices
- 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.)