16.01.2015 Views

CS2013-final-report

CS2013-final-report

CS2013-final-report

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Introduction to Computer Science, Harvey Mudd College<br />

Claremont, CA 91711<br />

Zachary Dodds<br />

dodds@cs.hmc.edu<br />

https://www.cs.hmc.edu/twiki/bin/view/CS5<br />

Knowledge Areas that contain topics and learning outcomes covered in the course<br />

Knowledge Area<br />

Software Development Fundamentals (SDF) 24<br />

Algorithms and Complexity (AL) 9<br />

Architecture and Organization (AR) 7.5<br />

Programming Languages (PL) 3<br />

Parallel and Distributed Computing (PD) 1.5<br />

Total Hours of Coverage<br />

Where does the course fit in your curriculum<br />

Every first-semester student at Harvey Mudd College – and about 100 students from sister institutions at the<br />

Claremont Colleges – take one of the sections of this course. It has no prerequisites and is offered in three distinct<br />

“colors”: CS 5 “gold” is for students with no prior experience, CS 5 “black” is for students with some experience,<br />

and CS 5 “green” is a version with a biological context to all of the computational content. 275 students were in<br />

CS 5 in fall 2012.<br />

What is covered in the course<br />

This course has five distinct modules of roughly three weeks each:<br />

(1) We begin with conditionals and recursion, practicing a functional problem-solving approach to a variety of<br />

homework problems. Python is the language in which students solve all of their assignments in this module.<br />

(2) In the second module students investigate the fundamental ideas of binary representation, combinational<br />

circuits, machine architecture, and assembly language; they complete assignments in each of these topics using<br />

Python, Logisim, and a custom-built assembly language named Hmmm. This unit culminates with the handimplementation<br />

of a recursive function in assembly, pulling back the curtain on the “magic” that recursion can<br />

sometimes seem.<br />

(3) Students return to Python in the third module, building imperative/iterative idioms and skills that build from<br />

the previous unit’s assembly language jumps. Creating the Mandelbrot set from scratch, Markov text-generation,<br />

and John Conway’s Game of Life are part of this module’s student work.<br />

(4) The fourth module introduces object-oriented skills, again in Python, with students implementing a Date<br />

calculator, a Board class that can host a game of Connect Four, and a Player class that implements game-tree<br />

search.<br />

(5) The fifth module introduces mathematical and theoretical facets of computer science, including finite-state<br />

machines, Turing machines, and uncomputable functions such as Kolmogorov complexity and the halting<br />

problem. Small assignments use JFLAP to complement this in-class content, even as students’ work centers on a<br />

medium-sized Python <strong>final</strong> project, such as a genetic algorithm, a game using 3d graphics with the VPython<br />

library, or a text-analysis web application.<br />

What is the format of the course<br />

This is a three-credit course with two 75-minute lectures per week. An optional, but incentivized lab attracts 90+%<br />

of the students to a two-hour supplemental session each week.<br />

- 391 -

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!