CS 241: Data Organization using C
Computer Science Department
University of New Mexico
Fall 2008

Instructor:
Joel Castellanos
Department of Computer Science
e-mail: joel@unm.edu
phone: 505-277-7146

Office: Farris Engineering Center (FEC) 321
     Building #119 in section I-2 of the campus map.

Office hours (Spring 2009):
     Mon & Wed: 10:30-11:30 AM
     Tues & Thurs: 8:00-9:00 AM and by appointment


Syllabus

Course Description

This course is an introduction to the C Programming language for students who already have solid skills in applying basic programming techniques such as loops, conditional control flow, and variable arrays in some other language (such as Java, Matlab, Python, etc.). The course covers memory organization of data storage and its relation to computation and efficiency. Topics include: linked vs. contiguous implementations, memory management, the use of indices and pointers, and an introduction to issues raised by the memory hierarchy. The course also covers fundamental data structures such as stacks, linked lists, and trees. Programming assignments provide practice with programming styles that yield efficient code. Computational experiments investigate the effect of storage design choices on the running time of programs. This class also covers the use of Linux command line tools for file organization, navigation, compilation, low level debugging and Makefiles.


Notes:

Coding Standards (updated: Feb 05, 2008)
  1. Hello World
  2. HelloWorld++: small programs that help with project 1.
  3. GVIM and Remote Linux Work Environment
  4. e-mail and i-clicker
  5. Postfix
  6. Code Standard
  7. Numerical Accuracy
  8. Bits
  9. Functions, Arguments, and Scope
  10. C Standard Libraries
  11. Input/Output
  12. Linked Lists
  13. Structures
  14. Swap, Case Insensitive Search
  15. Midterm Exam
  16. How to Solve It
  17. Maze Program and Recursion
  18. Genetic Programming and the Traveling Salesperson

Programming Projects:

  1. Project 1:Postfix Calculator

  2. Project 1.5:Postfix Calculator
  3. Project 2:Cipher


  4. Project 3: Doubly Linked List


  5. Project 4: Linked List with Memory Reuse


  6. Project 5: Maze Generator


  7. Project 6: Red-Black Tree


  8. Final Exam: Genetic Salesperson **Updated May 10, 8:42PM** descoped the project grading and added some examples for representing a genome.