CISC181-010 -- Fall 07

Introduction To Computer Science

Lecture: MWF 9:05AM - 9:55AM 104 Gore Hall
Lab - 0L: T 2:30PM - 3:20PM - Willard 009
Lab - 1L: T 3:35PM - 4:25PM - Willard 009
Lab - 2L: M 2:30PM - 3:35PM - Willard 009
Lab - 3L: M 3:35PM - 4:25PM - Willard 009
Prerequisites: CISC105 OR Prior Programming Experience in another high level language (This is IMPORTANT!)
Course Project Number: 2008 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: Roger Craig
E-mail: rcraig@cis.udel.edu
Office: Smith Hall 102
Office hours: Thursday 1-3PM
Web: http://www.baryon.cis.udel.edu/CISC181/


Grades
What's new for this semester:
New edition of the textbook. Less emphasis on operator overloading and friend functions.
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 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 three times week with minimal outside work, this is not the class for you. This course moves very quickly and has a lot of outside work (lengthy weekly labs, 3 programming assignments, 3 exams.)

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." The goal of this rule is to get you to think through difficult problems independently and avoid using myself or the TA as a crutch, instead of a tool.
  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.
These 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.

Emailing: When emailing general questions, please cc the TA as well. Also, to avoid spam filters, try to email from your udel.edu address only.

Lab/Project submission: All Labs must be submitted to the TA, either in person on in their mailbox. The due date for the lab is the date and time of your lab on the week the lab is due. For example, the lab listed due on Monday, September 10th is due that Monday for people will the Monday lab, and due on Tuesday the 11th for people with the Tuesday lab.

All Projects are due in lecture the exact day listed on the calendar. They must be personally handed to me in class. If you place it in a mailbox, you will receive a zero!

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. The following things are specifically not allowed.

  1. Looking at other people's code, or sharing your code with them, in any form at all (emailed, printed paper, IM.) The penalties for sharing your own code are just as severe as copying from others.
  2. Discussing specific solutions to the problems in class.
  3. Manually editing or falsifying program output and submitting it.

I haven't been out of school long enough to forget how rampant cheating can be in this course. Anyone who has had me can probably tell you I'm pretty laid back - but I will not tolerate cheating at all, because it really demotivates and hurts students who spend long hours working hard. 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 9th 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 through the Office of Judical affairs - penalties include probation, deferred suspension, suspension or explusion. I really dislike spending my time dealing with this and will just refer you to Judicial. 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++ (3rd Edition) ISBN: 0321468937
UNIX, Third Edition (Visual QuickStart Guide) ISBN: 0321442458
Just Enough UNIX 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. Work on Projects/Lab 8
Date Topics Resources Readings  What's Due
August 29 Introduction To Course Lecture 1

August 31 C++ Basics Lecture 2 Savitch Chapter 1
September 3 NO CLASS - Labor Day


September 5 Coding Standards


September 7



September 10 Finish coding standards, Numbers, Files
Lecture 3 Bad Char Good Char
Savitch Chapter 2, Using Unix 1
Lab 1
September 12 Control Flow



September 14 File Processing
Floating Point examples


September 17
Lecture 4

Lab 2
September 19 Functions
Lecture 5


September 21

Savtich Chapter 3, Using Unix 2

September 24


Lab 3
September 26 More functions, random numbers
Lecture 6
structs.txt

September 28 Start arrays
Random Number exploit


October 1
Review for Exam


Project 1
October 3
Exam 1



October 5
Arrays
Lecture 7
Savitch Chapter 5

October 8
Sorting, Structs, Strings
Lecture 8


October 10




October 12 Pointers
Lecture 9
new.cc

October 15 More Pointers

dynarray.cc
Lab 4
October 17 Linked Lists
Lecture 10
linked.cc

October 19

newlinked.cc

October 22
Lecture 11

Lab 5
October 24 Begin Classes
Lecture 12


October 26 Fall Break - No Class!



October 29 More Linked List/Pointers


Lab 6
October 31
In Depth c-strings



November 2
Start classes(exam 3) Lecture 13
Savitch Chapter 6

November 5 Review for Exam 2
Lecture 14

Project 2
November 7
Exam 2
Lecture 15
Savitch Chapter 7

November 9
Continue classes
Lecture 16
Savitch Chapter 8

November 12
Constructors, Destructors
Lecture 14
Savitch Chapter 14
Lab 7
November 14
Class Composition, this pointer
Lecture 15


November 16
Friend functions, operator overloading
Lecture 16


November 19
Inheritance
Lecture 17


November 21
No Class
"


November 23 NO CLASS - Thanksgiving



November 26
Inheritance
Lecture 19

November 28

Virtual Functions
string.cc inherit.cc
Lab 8
November 30
inherit1115.cc


December 3
Abstract Classes
Lecture 20 1204.cc Project 3
December 5
Review for Final


Final Exam, TBD


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
Joel on Software - A great software blog to start reading!