CSC 498 (Directed Study - 3 credits)
C Programming Techniques
Spring 2007
General Information
Class Meetings
Tuesday 9-11a.m.
Instructor
Prof. Nadeem Abdul Hamid Office: SCI 354B |
Phone: (706) 368-5632 (office) Email: |
Office Hours: Mon,Wed 11-1p.m., 3-5p.m. / Tue,Thu 2-3p.m. / (or by appt) |
Objectives and Outcomes
This course will be an intensive study of problem solving and algorithm design and analysis using the C programming language. It will cover modular programming techniques for organizing programs, recursive algorithms, and the fundamentals of storing and manipulating information using common data structures such as lists, trees, graphs, hash tables, etc.
By the end of this course, students should be able to:
- Demonstrate proficiency in the C programming language.
- Demonstrate the use of libraries and abstract data types (ADTs) to write programs for processing moderate to large amounts of data.
- Demonstrate knowledge of data abstraction and the implementation and use of lists, stacks, queues, hash tables, binary trees, and graphs.
- Demonstrate the use of various searching and sorting techniques.
- Determine the efficiency (time/space) of algorithms, using theoretical and empirical methods.
- Use recursive techniques to solve problems.
Assessment
Students will meet the learning outcomes with at least 75% success, based on performance on assignments, detailed below.Materials and Resources
- Required Textbook:
- Brian W. Kernighan and Dennis Ritchie, The C Programming Language, 2nd Ed., Prentice Hall, 1988. ISBN# 0-13-110362-8.
Evaluation
Programming Projects (70%) - These assignments (about 7 or 8 over the course of the semester) will build on topics in the syllabus. The intent of these is to demonstrate practical understanding of the course concepts and reading material. Some may involve independent research for completion.
Oral Presentation (20%) - 1 or 2 topics related to the course syllabus will be researched and presented by the student.
Attendance and Discussion (10%) - Regular attendance and participation in class meetings.
Grades will be determined on a standard 10% scale: 90%-100% earns an A, 80%-89% earns a B, etc., with +/- grades given at the instructor's discretion. Assignment submissions that are completed on time, satisfying all the requirements will receive an A grade. Submissions that satisfy most of the general requirements will receive a B grade. Work that has problems enough to fall short of the assigned requirements will receive a C. Work that has extremely serious problems, or is turned in late, but demonstrates at least some effort and understanding will receive a D.
Syllabus
Tentative schedule of course topics:
- Week 1 - Introduction: C development environments; UNIX system overview; shell basics; version control
- Week 2 - Program design: Modularity and data abstraction; software engineering concepts; structured analysis and design
- Week 3 - Algorithm analysis
- Week 4 - Recursive algorithms
- Week 5 to 7 - Linear data structures: dynamic memory allocation; lists; stacks; queues; applications
- Week 8 and 9 - Trees: basic concepts and terminology; binary trees; heaps; priority queues; applications
- Week 10 - Graphs: basic concepts and terminology; graph representations and elementary algorithms
- Week 11 - Sorting and searching algorithms
- Remaining weeks: Advanced topics (as time permits): hashing, advanced data structures; C system libraries (advanced I/O, threads, processes, signals)
Course Policies
Attendance Policy: Please see the Berry College Viking Code for "Class Attendance Policies" (pp 10-11, 2004-2005 edition). Missing three (3) or more classes without justifiable reason (and appropriate documentation) will be considered excessive absences.
Academic Integrity: Students are expected to have read carefully and understood the rules governing breaches of academic integrity that are to be found in the Viking Code (pp 16-17) and the Course Catalog (pp 27-28, 2003-2005 edition).
Late Work: Late work will not be accepted unless an excuse is obtained prior to the day on which the assignment is due. This policy will be waived only in an "emergency situation" with appropriate documentation and/or prior arrangement with the instructor.
Disabilities: Students with disabilities who believe that they may need accommodations in this course are encouraged to contact the Academic Support Center in Krannert Room 326 (Ext. 4080) as soon as possible to ensure that such accommodations are implemented in a timely fashion. Failure to contact the Academic Support Center will constitute acknowledgement that no disability exists and that no accommodations are needed.