Teaching
Courses I've taught
| Quarter | Course | Role |
|---|---|---|
| Spring 2009 | CMSC 23500 - Introduction to Database Systems | Lab Instructor |
| Spring 2008 | CMSC 23500 - Introduction to Database Systems | Lab Instructor and Grader |
| Summer 2007 | CMSC 15200 - Introduction to Computer Science 2 | Lecturer |
| Winter 2007 | CMSC 16200 - Honors Introduction to Computer Science 2 | Lab Instructor |
| Summer 2006 | CMSC 15200 - Introduction to Computer Science 2 | Lecturer |
| Winter 2006 | CMSC 16200 - Honors Introduction to Computer Science 2 | Lab Instructor |
| Summer 2005 | CMSC 15200 - Introduction to Computer Science 2 | Lecturer |
CMSC 23500 - Introduction to Databases
This course is an introduction to database design and programming using the relational model. I was the lab instructor for the course and, in its 2009 incarnation, the labs involved developing a relational database management system from scratch (from the file-based B-Trees all the way up to the SQL parser). Students worked in teams of four, collaborating through a Redmine site and an SVN repository. Additionally, a core part of the project was developed collaboratively by the entire class.
CMSC 15200 - Introduction to Computer Science 2
This course provides an introduction to computer programming. I was solely responsible for this course, including syllabus design. In 2005 and 2006, this was a fairly standard C/C++ programming and data structures course. In 2007, I redesigned the course to provide an introduction to both computer programming and software development. The first portion of the course introduced students to computer programming, using the C/C++ language, and covered fundamental topics such as flow of control, function definition, data structures, and object-oriented design and programming. The second portion of the course provided a more holistic view of software development and introduces students to tools, libraries, and additional languages that programmers should be proficient in to become effective software developers. Topics in this portion included using build tools, third-party libraries, scripting languages, data representation formats, and a brief introduction to other programming languages.
I designed the course (specially the 2007 redesigned version) to take a highly practical approach to teaching computer programming. Learning a programming language is similar, in some respects, to learning how to speak a new language. To become a fluent speaker, it is rarely enough to learn the syntax, grammar, and vocabulary of the language, even if we can memorize them letter by letter. It is generally necessary to converse and interact frequently with native speakers to pick up all the nuances of the language. Similarly, the best way to learn computer programming is by writing programs. The course involved homework assignments, labs, and a small final project where the students were able to practice programming and would receive frequent feedback about their programming aptitude and style from me.
CMSC 16200 - Honors Introduction to Computer Science 2
This course provides an extensive introduction to programming, including common UNIX tools, BASH programming, AWK, sed, C, lex/yacc, Python, XML, and SQL. I designed the lab exercises and was also the lab instructor. The lab exercises where highly collaborative, requiring students to exercise collaboration styles that arise in real-world software development, such as reviewing code critically and solving large problems with a team of programmers.
Teaching Consultant
I am a Teaching Consultant at the University of Chicago's Center for Teaching and Learning (CTL). My main responsibility is conducting Individual Teaching Consultations, where another teaching consultant and I will sit in on a lecture, videotape it, and then provide feedback to the consultee. I also occasionally lead workshops at the CTL.
Workshops and tutorials I've taught
Workshop on Collaborative Learning, Center for Teaching and Learning, University of Chicago. October/November, 2009 (exact date TBD).
Workshop on Collaborative Learning, Center for Teaching and Learning, University of Chicago. April 7th, 2009.
Teaching in the American Classroom, a panel discussion (I was one of three panelists in this session) in the 2007 Workshop on Teaching in the College, University of Chicago. September 18 and 19, 2007.
Entornos Grid Basados en Globus Toolkit 4. July 4-6, 2007. Universidad Complutense de Madrid (Madrid, Spain). 15-hour course on GT4 service programming with the Introduce IDE. This course is a part of Curso Superior de Administración, Explotación y Programación de Sistemas Grid (3ª Edición), a 100-hour summer course on Grid Computing.
Computación Grid. June 18-29, 2007. Universidad de los Andes (Bogotá, Colombia).
The FileBuy Globus Based Resource Brokering System - A Practical Example. September 15, 2006. GlobusWORLD 2006, Washington D.C. (USA). [website]
Entornos Grid Basados en Globus Toolkit 4. July 3-7, 2006. Universidad Complutense de Madrid (Madrid, Spain). 20-hour course on GT4 programming. This course is a part of Curso Superior de Administración, Explotación y Programación de Sistemas Grid (2ª Edición), a 100-hour summer course on Grid Computing.
Entornos Grid Basados en Globus Toolkit 4. July 6-12, 2005. Universidad Complutense de Madrid (Madrid, Spain). 25-hour course on GT4 programming. This course is a part of Curso Superior de Administración, Explotación y Programación de Sistemas Grid, a 100-hour summer course on Grid Computing.
Evolución de Globus. June 23, 2004. Instituto de Física de Cantabria (Santander, Spain). 2-hour presentation on the evolution and future trends of the Globus Toolkit. This presentation was a part of Grids y e-Ciencia, a 30-hour postgraduate course on Grid Computing. [slides]
Sistemas Grid Basados en GT3. March 3-5, 2004. Centro de Supercomputación de Galicia (Santiago de Compostela, Spain). 15-hour course on GT3 programming. [slides 1 2 3 4]