CAAM 420: Fall 2013

Syllabus and Lecture Notes

The link in each case is to the week's note set - each link will become active as the week in question begins, or as soon as the material is ready to be linked. Keep checking these links for updated material. On top of that, this syllabus will certainly change as the semester advances.

  1. Source code tarball #1
  2. Week 1: Unix Logistics. Installing VirtualBox and Ubuntu. Unix command line basics; the emacs text editor; setting up your subversion repository for homework submission and archiving; installing LaTeX, and basic document prep. Other Reading: VirtualBox and Ubuntu install guide by Jesse Chan, first chapters of Mittelbach et al. or Lamport, or better yet Wilkin's LaTeX primer. Useful links from the 2012 course page: VirtualBox and Ubuntu installs, Unix file system, emacs, LaTeX
  3. Week 2: Numerical Computation in C Reading: K&R 1.1 & 1.2 - Basic types, variables, assignment statements, main program, header files.
  4. Week 3: Computational Modules. Reading: K&R 1.3, 1.4, and 2.1-8, 3.5. Floats, doubles, constants, statements, equality test vs. assignment, evaluation of expressions, for and while loops, conditional branches, arrays, multidimensional arrays, matrix multiplication. K&R sections 1.7, 1.8, 4.1-2, 5.1. Functions, pass-by-value vs. pass-by-reference, return values, function scope, prototypes, pointers
  5. Week 4: Working with Arrays Reading: K&R sections 5.1-4, 5.10-11, 7.2,7.4. Pointers and arrays, dynamic/heap vs. automatic/stack memory allocation, malloc and free, the usual dynamic memory bugs and how to avoid them, passing variables through the command line, function pointers, reading formatted input with scanf.
  6. Week 5: Input and Output, Structures. Reading: K&R 7.5, B1.1-6 (pp. 242-8), 6.1-4, 6.7. Stack overflow. Text and binary i/o, file handling, structures
  7. Week 6: Libraries and Makefiles Fortran 77 and some classic numerical libraries for linear algebra and differential equations. Using libraries, using makefiles to manage projects. Reading: Gnu Make.
  8. Week 7: C++ - a better C. Reading: Stroustrup Chs 4-7. Dynamic allocation, default arguments, io streams, the string type, pass by reference
  9. Week 8: Defining new types. Reading: Stroustrup Ch. 10. Intro to classes - constructors and destructors, data and function members, subclasses, access control, const for data and methods, this, a first matrix class.
  10. Week 9: Class hierarchy. Reading: Stroustrup Ch. 10, 11, 12. Concrete vs. abstract classes, subclasses and inheritance, virtual functions, a first abstract matrix class
  11. Week 10: Parametrized Types. Reading: Stroustrup Ch. 13. Templates and generic programming, combining generic and inheritance-based OOP, and a yet-better matrix class
  12. Week 11: Efficient Containers. Reading: Stroustrup Chs. 16 and 17. Brief tour of the Standard Library
  13. Week 12: And So On. Reading: Stroustrup Chs. 8, 10-12. Namespaces, error handling, member initialization, refactoring the matrix class
  14. Week 13: Elements of OO Design. Reading: Stroustrup Chs. 23-25, class notes.
  15. Week 14: Python as a scripting language, and as a general programming language - just a taste! Also: modern replacements for Make.