6.S04 Fundamentals of Programming


Prerequisites: 6.0001 or 6.0001 Advanced Standing Exam or 6.01
Units: 2-4-6
Institute Lab
Instructor:  Prof. Srini Devadas
Schedule:  L T11-12:30
                     Laboratory 1: W 10-12 or W 1-3
                     Laboratory 2: F 10-12 or F 1-3

6.S04 satisfies the 6.02 requirement in the current EECS curriculum.  It also serves as a 6.01 prerequisite for 6.005 and 6.006 so students can take 6.005 or 6.006 after taking 6.S04 even if they have not taken 6.01. 6.S04 is a class on programming basics, and should not be taken by students who have already taken 6.005 or 6.006 unless the student is in the Class of 2019.

Introduces fundamental concepts of programming. Designed to develop skills in applying basic methods from programming languages to abstract problems. Topics include programming and Python basics, computational concepts, software engineering, algorithmic techniques, data types, and recursion and tail recursion. Lab component will consist of software design, construction and implementation of design.
Students will write programs from scratch for a mini-Pandora music player, edge detector for images, Bacon number calculator, gas simulator, Auto-completer, No-Left-Turn pathfinder, Pong, and Breakout, among other things.
Licensed for 2015-2016 by the Committee on Curricula.