This course covers programming methodologies for solving fundamental engineering problems using algorithms with pervasive application across disciplines. Overview of computer systems from a programming perspective including processor architectures, memory hierarchies, machine arithmetic, and performance tuning techniques. Algorithms include iterative, direct linear solvers, fft, and divide and conquer strategies for n-body problems. Software development; other practical UNIX tools including shell scripting, vi/emacs, gcc, make, gdb, gprof, version control systems and LaTeX.
Monday, Wednesday, Friday, 11:00am - 12:15pm
Lane History Corner, 200-203
We will be using Piazza to send announcements and as a discussion board for the homework projects. Please use this if you have questions regarding course material.
Instructor: Nick Henderson, ICME ()
TA: Alex Shkolnik, ICME ()
The calendar (below) shows when assignments will be given.
Assignments are due just before the subsequent one is assigned.
Each student is allowed a total 4 late days over the quarter. The late days may be used on the assignments and tutorials, but not the final. After exhaustion of the late days, assignments will be penalized 20% per day.
Assignments will be submitted via a script on corn.stanford.edu. There will be instructions in the assignment handouts, but it is a good idea to familiarize yourself with Stanford's unix computing environments.
We expect your codes to compile and run on corn.stanford.edu, however you are welcome to develop, test, and profile your codes where you like. We will ask that you describe your testing environment in the write ups that will be associated with the assignments.
Slides for cme212 lectures will be linked here. Students are welcome to look over the programming slides from cme211 here.
LaTeX Tutorial, due Wednesday, Jan 18 at 5pm. (tex) (makefile) (slides)
Asssigment 1, due Wednesday, Feb 1 at 5pm. (tex)
GDB/Valgrind Tutorial
Week 1: Chapters 1 and 2 of The Not So Short Introduction to LaTeX
Week 2: Essential C and Pointers and Memory
This list will be expanded during the quarter.
C. Severance & K. Dowd, High Performance Computing. (pdf) (epub) (print) [CS]
The C programming language:
Development tools:
TeX references & material:
Unix & Linux references:
GNU, GNU Emacs Manuals.
Please report broken links.
PuTTY: A Free Telnet/SSH Client (for Windows).
Xming. An X11 server for Windows.
Aquamacs. An Emacs GUI for Mac OS X.
Org-mode for Emacs.
|------------------+-----------------------------+----------------| | <2012-01-09 Mon> | course intro | | | <2012-01-11 Wed> | architecture intro | | | <2012-01-13 Fri> | latex tutorial | latex tutorial | |------------------+-----------------------------+----------------| | <2012-01-16 Mon> | MLK day, no classes | | | <2012-01-18 Wed> | C programming I | assignment 1 | | <2012-01-20 Fri> | C programming II | | |------------------+-----------------------------+----------------| | <2012-01-23 Mon> | tools I | | | <2012-01-25 Wed> | | | | <2012-01-27 Fri> | tools II | | |------------------+-----------------------------+----------------| | <2012-01-30 Mon> | representation I | | | <2012-02-01 Wed> | | assignment 2 | | <2012-02-03 Fri> | representation II | | |------------------+-----------------------------+----------------| | <2012-02-06 Mon> | testing & verification | | | <2012-02-08 Wed> | | | | <2012-02-10 Fri> | timing & performance | | |------------------+-----------------------------+----------------| | <2012-02-13 Mon> | architecture I | | | <2012-02-15 Wed> | | assignment 3 | | <2012-02-17 Fri> | architecture II | | |------------------+-----------------------------+----------------| | <2012-02-20 Mon> | President's day, no classes | | | <2012-02-22 Wed> | optimization I | | | <2012-02-24 Fri> | optimization II | | |------------------+-----------------------------+----------------| | <2012-02-27 Mon> | linear algebra I | | | <2012-02-29 Wed> | | assignment 4 | | <2012-03-02 Fri> | linear algebra II | | |------------------+-----------------------------+----------------| | <2012-03-05 Mon> | C-fortran interface | | | <2012-03-07 Wed> | | assignment 5 | | <2012-03-09 Fri> | python | | |------------------+-----------------------------+----------------| | <2012-03-12 Mon> | matlab mex interface | | | <2012-03-14 Wed> | | | | <2012-03-16 Fri> | course review | final | |------------------+-----------------------------+----------------| | <2012-03-19 Mon> | finals period start | | | <2012-03-23 Fri> | finals period end | final due | |------------------+-----------------------------+----------------|