CISC181-013,014,015 -- Fall 05

Introduction To Computer Science

Lecture: MWF 11:15AM - 12:05PM 217 Gore Hall
Lab: Section 013: M 2:30PM - 3:20PM - Willard 009
Section 014: M 10:10AM - 11:00AM - Willard 009
Section 015: M 9:05AM - 9:55AM - Willard 009
Prerequisites: CISC105 OR Prior Programming Experience in another high level language (This is IMPORTANT!)
Course Project Number: 2003 What is a project number?

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: Xiaolin Yang
E-mail: xiaolin@udel.edu
Office:
Office hours:


Grades


What's new for this semester:
More coding to be done in class (past students have requested this.) More emphasis on coding style and memory management, less emphasis on Operator Overloading. New (and improved) book! Some slides will need updating.
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.
There rules are here not to make life difficult for you, but to encourage you to think the problems through on your own. If you're really stuck, of course I'm going to help you, but I don't want you to email immediately when you get to a hard problem.

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:

Special Rule: Your final grade cannot be more than one letter grade higher than your exam average. This ensures that your final grade reflects your mastery of the basic concepts of the course.

Lab/Project submission: All Labs must be submitted to the TA, either in person on in their mailbox. All Projects must be personally handed to the TA - if you place it in their mailbox, you will receive a zero on it.

Homework Submission: Homeworks should be submitted to me. If the homework involves a programming assignment, it has to be done on a computer, with appropriate test runs.
All papers MUST be stapled. Unstapled papers will lose 10 points.

Coding conventions: I will go over coding conventions in the second or third lecture. Your code should generally follow it, or you will lose points. Code that can't be followed clearly by other people is far less useful (more on this later.)

Lateness: Assignments are due by the end of class on the date they are due. After that, they lose 5%/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. Any paper that doesn't have the date and time clearly marked on it on the first page (Either circled, if the printout shows a timestamp, or otherwise written) will lose 10 points.

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 5th time teaching it. So if anyone can spot copied code/cheating, it's p6obably 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


Absolute C++, Savitch, ISBN: 0321330234
Just Enough Unix, 5th Edition, by Anderson,   ISBN: 0072952970

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
August 31 Introduction To Course Lecture 1
September 2 C++ Basics Lecture 2 Savitch Chapter 1
September 5 LABOR DAY - NO CLASS
Go to the beach!
September 7 Algorithms, Casting, Control Flow Savitch Chapter 2
Just Enough Unix Chapter 1
September 9 Loops, File Processing Coding Standards Just Enough Unix Chapter 2
September 12 File Processing, Functions Lecture 3 Savitch Chapter 3
Random Number Exploit
Lab 1
September 14 Storage Class, More Functions Lecture 4 Savitch Chapter 4
September 16 More functions Lecture 5
September 19 Recursion Lecture 6 Lab 2
September 21 More recursion, references Floating Point Examples
September 23 More references, Inline functions Homework 1
September 26 Start Arrays Lecture 7 Code from Class Lab 3
September 28  Review Homework 1, Review for Exam
September 30 Exam 1 random.cc typecast.cc
October 3 More Arrays Lecture 8 Bubblesort Example Project 1
October 5 More Arrays, Strings, Start Pointers Lecture 9 Chapter 9
October 7 Pointers! Chapter 10
October 10 Pointers Continued Code from Class Lab 4
October 12 Even more pointers Code from Class
October 14 Structs, Memory Allocation Code from Class
October 17 Linked Lists Lab 5
October 19 More Linked Lists
October 21 Even more linked lists Code from Class
October 24 More Linked List Review, Start Classes Lecture 12 Chapter 6 Lab 6
October 26 Classes
October 28 Fall Break - No Class!
October 31 Review for Exam
November 2 Exam 2 Project 2
November 4 Constructors Lecture 13 Chapter 7
November 7 Review Exam, Finish Constructors
November 9 Const correctness, this pointer Lecture 14
November 11 Friend functions, Operator Overloading Lecture 15
November 14 Friend functions and Operator Overloading Lecture 16 Lab 7
November 16 Inheritence
November 18 Inheritence Lecture 17
November 21 START THE PROJECT
November 23
November 25 Thanksgiving - No Class!
November 28 Lab 8
November 30 Lecture by Dr. Conrad
December 2 Inheritence Lecture 18 Project 3
December 5 Inheritence, Virtual Functions Lecture 19
December 7 Review for final
December 9 Final Exam, 8AM, KRB 100

Resources

 Professor Conrad's CISC181 Page
 C++ Reference
 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