CS 436 Course Syllabus




General Information

Instructors Our offices are in the new Engineering Technology Suite off of the Reynolds breezeway; here is our contact information.

You can send snailmail to us at NCSSM, 1219 Broad Str., Durham, NC 27705.

Prerequisites: CSC434 or permission of department. You should have a strong grasp of C programming, pointers, and heap management to be in this class.

Learning Resources:

Course Description: You will learn how to implement the stacks using a link bsaed and array based implemenation. We will then study the implementation of the major data structures (stacks, lists (if not done in 434), queues, priority queues, heaps, hash tables, trees) and do several projects that apply these to bulding several working applications that depend on these data structures. Emphasis will be placed on doing good memory managmenent.

Course Objectives: These are the things you will learn about.

  1. You will learn how data structures are implemented at a low level in C.
  2. You will use data structures to build applications. Examples with stacks: Create an HTML/XML well-formedness checker using a stack. Create a terminal-based RPN calculator. Examples with trees: write a simple expreession evaluator.
  3. You will learn how to use the gdb debugger to trace code and valgrind to diagnose, isolate, and eliminate segmentation faults. Since the data structure business is laden with pointers, you will need these tools if you want to see an error message other than segmentation fault.
  4. You will learn about link-based stacks, and then extend this to a full-service link-based list.
  5. You will learn how to execute a mathematical induction argument and how induction relates to recursion in computer programs.

Rough outline of the classThis order may vary slightly depending on the preferences of the class.

Course Goal: We will have several major programming projects throughout the term. You will do a lot of coding "where the rubber meets the road," which means it will be attended by juggling of a lot of technical detail including proper file IO and lots of debugging. These projects will largely be done in pairs; in some you get to choose a partner, in others, you are randomly assigned a partner.

Class Mechanics

What to Bring to Class Bring your lappy and its power cord. We will use computers most days.

Class Organization: This class is at once lab and lecture. We will demonstrate coding constructs and have you try them right away. You are encouraged to bring your laptop to class and configure your machine to your liking. You are expected to particpate in class discussion and to be helpful when we are coding "live" in class.

You are encouraged to share ideas and ask questions. Unless I specify otherwise, you may help each other debug code. For further guidance, see our policy on Academic Honesty.

Programming Assignments and Other Assessments: No one really understands what is going on in a any class with significant analyticl content class until they actually make things work. It's this simple: if you can't do this, you don't really understand the material. The biggest mistake made by many CS students is that they confuse an active understanding of the material with a passive understanding. Until you attempt, fuss over and debug programs, you are nowhere. Therefore, you will see work on a wide variety of programs and projects.

Whoa! Back up! You are expected to back up your work on cs2.ncssm.edu; accounts on this server have been provided to all of you. You should keep any written graded assignments returned to you, and keep the programs you turn in in your electronic files. This is your insurance against us accidentally corrupting, destroying or misplacing your files. This does happen sometimes!

Academic Honesty in this class:
You are encouraged to share ideas and ask questions. Unless we specify otherwise, you may help each other debug code. You may use diagrams, analogies, or other un-technical explanations. You may not share any code or any "dead-giveaway" help. When you help classmates, your goal is to enable them to solve similar problems on their own. If you don't think you can comply with this guideline you should turn down your classmates' request for help. Refer them to your instructor. You are bound by policy as laid out in these two documents:

Failure to adhere to these policies will result in a zero on the offending assignment and academic honesty charges.

Attendance and Tardiness Policy: Be presnent, mentally and corporeally. Be on time.
Class meets four times a week and takes lab. You are expected to attend every class in order to be successful in mastering the material covered. If you are more than 5 minutes late you will be considered Tardy. If you are more than 25 minutes late you will be considered Absent.
Participation is vital to your progress in class. Excessive unexcused absence and tardiness will not be tolerated and will reflect poorly in your grade. You are expected to be aware of attendance policy outlined in the Student Handbook and to adhere to it.

Late/Incomplete/Makeup Work in this class:
When you anticipate an excused absence, see us ASAP for makeup arrangements. By nature, this class builds sequentially and depends on steady progress. If you run into difficulty, see us and we can grant you and extension to complete your program or project.

Multiple Major Assignments: If you have more than 2 major assignments due on the same day as a scheduled major assignment in this class, please let your instructor know and contact Academic Programs at least 48 hours in advance for relief. We are reasonable people as long as this is not abused.

The Classroom Policy Page contains all of the documents pertaining to general classroom policy in Computer Science; these apply to all CS classes. Make sure you read and understand them.

For information on the following school wide policies, please reference the current version of the Student Handbook available under the NCSSM folder found in the Documents & Forms chiclet at https://my.ncssm.edu. It is your responsibility to be familiar with these policies.

Grading

A rant note about grades: We believe that the over emphasis of grades impedes a student's ability to learn. This is a school, a place for learning. Please do not let a focus on grades prevent you from focusing on learning. If you learn and work hard, your grade will take care of itself.
"I have never let my schooling interfere with my education." - Mark Twain

Grading

Grading Scale:
A: 90 - 100
B: 80 - 89
C: 70 - 79
D: Below 69