Assembly and C Programming Mini-Course (2021)

Welcome #

“High”-level programming languages such as python provides many abstract types like lists and dictionaries and support complex operations such as taking a slice of the list as a basic operation. The underlying computer, of course, doesn’t directly support such complex operations in hardware. The typical “Data structures and algorithms” course describes how one can structure data (Data structures) in memory so that complex operations can be implemented efficiently in terms of more primitive ones (Algorithms). A student who has only programmed in a language such as python may not have a sufficient understanding of the more primitive data structuring mechanisms and associated operations supported by the hardware. The goal of this course is to build this understanding.

Contact #

Please write to Balagopal Komarath <bkomarath@iitgn.ac.in> for any course related queries.

Lectures #

  1. Why assembly?
  2. Assembly datatypes
  3. Assembly programming
  4. Discussion
  5. Branching
  6. Loops
  7. Types
  8. Discussion
  9. Functions
  10. C pointers
  11. C compound types

Tests #

  1. Day 0
  2. Day 1
  3. Day 2
  4. Day 3
  5. Day 4

References #

  1. The simulator
  2. The instruction set
  3. List vs Set program
  4. List vs Set plot
  5. List insertion benchmark
  6. List insertion plot
  7. Factorial program
  8. C programs
  9. C tutorial
  10. Board