CISC181-010 -- Summer 04

Introduction To Computer Science

Lecture: Tuesday/Thursday 4:30PM-6:15PM - Gore 308
Lab: Tuesday 6:30-8PM - Smith 040
Prerequisites: CISC105 OR Prior Programming Experience in another high level language (This is IMPORTANT!)

Instructor: Chris Fischer
E-mail: cfischer@cis.udel.edu
Office hours: Before Class and by Appointment
Web: http://www.cis.udel.edu/~cfischer/

Teaching Assistant: Manabu Torii
E-mail: torii@cis.udel.edu
Office: Smith 040
Office hours: Friday 9:00AM-11:00AM


Grades



What to expect in this course:
A lot of work. This course has to teach both the basic features of the C++ language, many of which the concepts you may know already, and the advanced features (Pointers, Operator Overloading, Classes, Inheritance, Polymorphism..) in one semester. If you're looking for a course to show up to twice a week with minimal outside work, this is not the class for you. This course moves very quickly and has a lot of outside work (labs, homeworks, 3 programming assignments, 3 tests).

You can also expect that I will provide you a LOT of resources to succeed in this course. I will provide as many outside references and sample code as I can. I will also make myself available for questions as much as possible. If possible, reach me by email, during the week. I will usually get back to you very quickly. However, I do have two rules.

  1. I am not here to debug your programs. That is a part of the assignment. Do not email me your program saying "It doesn't work, what's wrong?". This does not mean I'm not going to help you, I will, but ask specific questions, not "what's wrong with this".
  2. I get very unsympathetic to questions the night before/day of/after the project due date. They should really be done by then.  I also am unsympthetic towards people that email questions but don't come to class.
Other important points:
You are strongly encouraged to come to class. While I will put some material up on the web, it will be hard to do well in this course without coming to class. Reading the relevant chapters ahead of time is also a good idea. Last semesters class convinced me to post the Powerpoints ahead of time. I'll do that again, but only if people show up regularly for class.



Course Policies:

Coding conventions: I will go over coding conventions in the second or third lecture. Your code should generally follow it.

Lateness: Assignments are due by the end of class on the date they are due. After that, they lose 10%/day, up to a maximum of 7 days late. Labs can be turned into my or the TA's mailbox, with the DATE and TIME of submission clearly marked on it.  Programming Projects MUST be handed to either myself or the TA.  If you place it in either of our mailboxes, you will receive a ZERO on it.

Academic Dishonesty: DO YOUR OWN WORK. You as specifically NOT permitted to discuss solutions to problems with other students or share code.

I haven't been out of school long enough to forget how rampant cheating is. So before you think about sharing solutions, know this much going in.

  1. I am a professional Software Engineer - I stare at code all day long. I've also TA'ed this course 3 times, and this is my 3rd time teaching it. So if anyone can spot copied code/cheating, it's probably me.
  2. The tests will have a large amount of the material that comes straight from the homeworks/projects. This will make them fairly easy for students who have completed and understood the projects on their own, and very difficult for those that haven't.

Cheating will be dealt with per University guidelines. I really don't want to waste everyone's time by doing this, but I will. Please do your own work.

Grading Policies: I'm going to grade on the standard curve (>93=A, >90=A-, >87 B+, etc.). This is guaranteed. Depending on class performance or other factors, I might adjust this scale down (to help everyone) I will never adjust it up.
Also, all your grades will be posted online (via a code name) so that you always know exactly where you are throughout the semester. Please check online and make sure all your grades are correct.

Your grade for the semester will be based on:
Tests:   50% of final grade
Projects:   25% of final grade
Labs + Homeworks   25% of final grade

Class participation can positively affect a borderline grade. 


Textbooks

Required: C++ How To Program, 4th Edition, by Deitel and Deitel    ISBN: 0130384747

Required: Just Enough Unix, 4th Edition, by Anderson,   ISBN: 0072463775

Required: C++ in the Lab, 4th Edition, Deitel, Deitel, and Nieto ISBN: 013038478X


Schedule

You are expected to attend all classes, and to be prepared for each class by reviewing notes from the previous lecture and reading the scheduled reading assignments. You are responsible for all announcements and material presented during classes, whether you are present or not.
This schedule is tentative and subject to change.
 
Date Topics Resources Readings  What's Due
Jun 8 Introduction To Course Lecture 1 Deitel Chapter 1, Using Unix 1-3
Jun 10 C++ Basics, Algorithms, Coding Standards Lecture 2 Deitel Chapter 2
Jun 15 Casting, Control Flow, Looping, File Processing Lecture 3 Lecture 4 Deitel Chapter 3 Lab 1
Jun 17 Functions, Random #'s, Storage Class, Scope Lecture 5 Lecture 6 Using Unix 6-7, Deitel Cpt 14
Jun 22 More Functions, Arrays Lecture 7 Deitel Chapter 4 Lab 2
Jun 24 More Arrays Lecture 8 Deitel Chapter 5 Homework 1
Jun 29 Structs, Strings, Review for Exam 1 Lab 3
Jul 1 Exam 1 Project 1
Jul 6 Review Exam, Pointers, Starting Linked Lists Lecture 9 Lecture 10
Jul 8 More Linked Lists Lecture 11 Homework 2
Jul 13 Introduction to Classes, Constructors/Destructors Lecture 12 Lecture 13 Deitel Chapter 6 Lab 4
Jul 15 More Classes, Review for Exam 2 Deitel Chapter 7 Homework 3
Jul 20 Exam 2 Project 2
Jul 22 Review Exam 2, Friend Functions Lecture 14 Lecture 15
Jul 27 Continue Operator Overloading, Start Inheritance Lecture 16 Lecture 17 Deitel Chapter 8 Lab 5
Jul 29 Continue Inheritance Lecture 18 Deitel Chapter 9 Homework 4
Aug 3 Virtual Functions, Polymorphism Lecture 19 Deitel Chapter 10 Lab 6
Aug 5 Abstract Base Classes, Review for Final Lecture 20 Homework 5
Aug 10 Final Exam, In Class Project 3

Resources

 Professor Sullivan's 181 Page
 Professor Caviness's 181 Page
 C++ FAQ (Lite version)
 U. of Hawaii's VI tutorial
 VI Lover's homepage
 EMACS tutorial
 STL String Reference
 Pointer Fun With Binky (and other help with Pointers + Linked Lists)
 Sun Ray Reference / Tips ( Thanks to Professor Conrad for this )
 Sorting Algorithms (Look at Bubble and Selection - than look at one that uses better than 0(n^2) - merge or quick sort should be fine.
 
Linked List Tutorial