You are here
Faculty Instructor
Introduction to Computer Science I (Fall 2013, Fall 2014)
From the undergraduate calendar:
A first course in programming emphasizing problem solving and computational thinking. Topics include pseudocode, variables, conditionals, iteration, arrays, objects, functions, sorting, searching, and simulation.
I have taught both the major and non-major sections of this course using Processing. Read more about my course design.
Introduction to Computer Science II (Fall 2014, Winter 2014, Winter 2015)
From the undergraduate calendar:
A second course in programming emphasizing problem solving and computational thinking in an object-oriented language. Topics include abstraction, mutable data structures, methods, inheritance, polymorphism, recursion, program efficiency, testing and debugging.
I have taught this course to both majors and non-majors. In Fall 2014, I redesigned the course, partly to be a better bridge between the first programming course and the next course students will progress to in second year (Introduction to Systems Programming). The course begins with C++ and moves to Java. Read more about my course design.
Introduction to Systems Programming (Winter 2014)
From the undergraduate calendar:
Introduction to system-level programming with fundamental OS concepts, procedures, primitive data types, user-defined types. Topics may include process management, memory management, process coordination and synchronization, inter-process communication, file systems, networking, pointers, heap and stack memory management, and system/library calls.
For this course, I followed another instructor's materials and just added some interactive activities in the classroom.
Programming Paradigms (Winter 2014, Winter 2015)
From the undergraduate calendar:
An introduction to alternative programming paradigms such as functional, constraint-based, concurrent, and logic programming.
I largely use existing material for this course with the addition of a visual/animation context from Racket's Universe package.
Introduction to Computational Thinking for Arts and Social Science Students (Summer 2011, Summer 2012, Fall 2013, Fall 2014)
To appear in the 2015 undergraduate calendar:
An introduction to computational thinking and its applications to the arts and social sciences. Students will gain computational thinking skills by exploring data representation, basic programming concepts, a selection of algorithms, and advanced usage of software packages for the arts and social sciences.
I recently designed this course to move from learning about software usage to gaining computational thinking skills (including programming). Read more about the course design.