Hey there! I’m Nivedita and I’m a junior at Carnegie Mellon, where I’m majoring in Computer Science (with a minor in Economics).
This is my 4th time as a Teaching Assistant for 15-122 : Principles of Imperative Computation, currently the first course in the core CS curriculum at CMU. The first part of the course is taught in C0 (pronounced c-nought), a language developed at CMU that is described by it’s creators as “a small safe subset of the C programming language, augmented with contracts.” As the semester rolls on, we introduce various data structures and algorithms, whilst setting the stage for a transition into C. Upon transitioning into C, we discuss memory management, generic data types, function pointers and various quirks of C. The course culminates with the students writing a virtual machine for C0 in C, that is able to execute byte code generated by the C0 compiler.
Most people blog about an experience that they’re having for the first time. Why am I doing it my fourth time? Because, along the bumpy road, I’ve learnt a lot and I think the time is ripe to share it, while I’m reliving the experience again. Some of it will be about the material, some of it will be about how I’m teaching it.
Looking back, I realize that I’ve learnt the most from the students taking the class. This semester promises to be no different, hence I’m dedicating this blog to the students taking 122 in Spring 2014. So hang on tight for a roller-coaster ride through a land of smiles and tears, hugs and frowns, where the C0 compiler and Autolab can make or break your day.
(For more info on C0, check http://c0.typesafety.net/)