Advanced topics in software development, debugging, and performance optimization are covered. The capabilities and usage of common libraries and frameworks such as BLAS, LAPACK, FFT, PETSc, and MKL/ACML are reviewed. Computer representation of integer and floating point numbers, and interoperability between C/C++ and Fortran is described. More advanced software engineering topics including: representing data in files, signals, unit and regression testing, and build automation. The use of debugging tools including static analysis, gdb, and Valgrind are introduced. An introduction to computer architecture covering processors, memory hierarchy, storage, and networking provides a foundation for understanding software performance. Profiles generated using gprof and perf are used to help guide the performance optimization process. Computational problems from various science and engineering disciplines will be used in assignments. Prerequisites: CME 200 / ME 300A and CME 211. The CME 211 requirement may be satisfied by passing a placement test administered by ICME. (See the Stanford Bulletin entry for time and location)
Please check the FAQ document for answers to common questions. This is the best place to look for information regarding course capacity and waitlist.
The CME 212 Canvas page is available to all Stanford students. Please ask questions related to course material in the Canvas discussion forum. We also use Canvas to post homework assignments and announcements.
Send a message to the staff mailing list: firstname.lastname@example.org