FINAL EXAM

The Final Exam will be Monday evening, June 27th, from 6:00 - 9:00.

Tentatively, it will be in Room 4415, GITC building (= Information Technology Center = Guttenberg building). (I just asked for the room, if there is any problem I will let you know.) In doubt, come to my office, room 4307 GITC.

If you have a GOOD reason why you cannot come at that time/day, preferably with written proof, then I will accommodate you at another time or day. For example, I am in all day on that Monday. If you want you can take the exam at 1:00 PM.

Let me know such problems as soon as possible.

There are travel instructions and maps of parking lots on the NJIT home page.

The exam will be open book, open notes, but no calculators and no devices whatsoever.

SEVERE WARNING. I know from experience that some people don't study at all for an open book exam. That would be a big mistake. Open book exams are always made LONGER and HARDER than closed book exams.

If you start looking up everything in the book you will run out of time long before you have answered all the questions. Also on programming questions having the book won't help that much. The book might help with syntax but not with skills like programming. Only exercise helps with skill. You cannot learn swimming from a book either.

Corrections to Program 3

I made some mistakes on the description of Program 3. (The program was more complicated originally and I forgot to delete those pieces.)

Please revisit the assignment, I fixed this now. Thanks to those who pointed out the problem.

Things should actually look slightly easier now.

Program 3

Program 3 is here.

Homework 5

Here.

Homework 4

Here.

Program 2

Program 2 is here.

Program 1

Sorry, I won't get to grade it for another couple of days.

Comment on Homework 2

I need to add two more general instructions for the homeworks. Even though they are not that necessary anymore.

1. If your login name has nothing to do with your real name, something like DarthVader@evilempire.com then you need to put your real name at the end of every answer until I learn them.... But by now I now I know most of you already.

2. If you find an answer on the Web, that's fine, but I don't want you to cut and paste it. You need to retype it, preferably in your own words. However. Many times you would get a better answer by looking at the Tapes. The Web does not always do things exactly like we are doing them.

Homework 3 is now available.

Here.

Common Errors

Most people have homework 1, question 3 wrong. Not just wrong, but wrong in a way that shows that you did not look at the tapes and did not look at the online notes. Because you did not initialize at all. Here is a correct answer of one of you:
(a) int Y = 123;
(b) char Y = 'Y';
(c) char Y[] = {'a', 'b', 'c', 'd', 'e', 'f'};
(d) int Y[] = {1, 2, 3, 4, 5, 6};

I will catch up with grading HWK 1 over the weekend.

You will receive an email with a grade for every single question. Grades will be out of 5 points. Thus, if my email says "5" it is full credit, if it says 1, 2, 3, 4 it is partial credit.

If it says 0 then it's typically that you did not understand the question, or you said exactly the opposite of what is correct. I rarely give 0, because I reserve 0 for people that don't hand in homeworks at all. Anybody who tries to do it should get some credit.

I will list common mistakes on this home page. If you make special mistakes I will try to explain them.

Program 1 is now available.

Here.

Homework 2 is now available.

Here.

I have received many homeworks and will slowly grade them, mostly over the weekend.

Homework 1 is now available.

Here.
CIS 114                                                     Summer 2005
                                Syllabus 
                                --------
1. Personnel
Instructor:           James Geller
Office:               4307 Information Technology Center (Guttenberg Building)
Phone:                (973) 596-3383  (Messages: 596-3366) 
Home Page:                               http://web.njit.edu/~geller/
Email:                geller@njit.edu
Office Hours:         Hours by appointment only.
WEB LINK:             NJIT INFO on this course
             

2. Readings:  Data Abstraction & Problem Solving with C++, 3rd Edition  by
Frank Carrano & Janet Prichard.  Benjamin Cummings.

VIDEO TAPES:  You cannot pass this class without watching the video
tapes that go with it!

You can order tapes by phone at:
HAVE, Inc. by calling 1-800-999-4283


Information about ordering Video Tapes is in here. 


There are also two sets of notes available on the web.
The first set is here:
http://cpe.njit.edu/dlnotes/undergrad.html
You need to have a University Computing ID (UCID) and Password
to access these notes.

These notes are directly derived from the video tapes.
You will not understand the notes without watching the tapes.
In other words, you cannot "save time" and just read the notes.
They will not make any sense to you!!!!!

There is a second set of notes available.  These were written
by Jack Holm for the in-class version of 114.  
They are based on the same book, but not on the tapes.  They are more 
extensive.  You can use them as "supplementary materials" if you want.
NOTE:  Syllabus etc. at the Web Site below are NOT valid for you.

http://cs.njit.edu/cis114/


3. Assignments:

SORRY FOR WRITING IN CAPITAL LETTERS.  BUT... YOU HAVE TO UNDERSTAND.
YOU ARE LEARNING THE MATERIAL OF 14 WEEKS IN 5 WEEKS.  AND SOME STUDENTS
HAVE A HARD TIME LEARNING IT IN 14 WEEKS, SO YOU SHOULD HAVE AN EVEN
HARDER TIME.  YOU NEED TO PUT A SIGNIFICANT AMOUNT OF TIME INTO THIS 
COURSE.  IF YOU HAVE A FULL TIME JOB, I FEEL THAT WITH JOB AND CLASS ALL
YOUR TIME WILL BE USED UP.  It's better if you accept this reality.

If you don't have a full time job, it's as if you are taking a full load
(four courses/12 credit hours).


Viewing:   You need to view SIX videotapes every week, starting in the
           first week.  

Reading:   It is strongly recommended that after you watch a tape
           you should read the corresponding chapter in the text book.

Exams:     There will be an in-class closed book final exam.
           If you live AND work more than 50 miles away from NJIT then
           let me know, and we try to find a testing center for you,
           or another solution. 
	  

Homeworks: Typically, there will be one question about each tape.
           Homeworks will be published on the web.  
           Homeworks must be submitted by email.

	   We will NOT use Webboard or any similar system.
           Make sure everything you email to me has the subject CIS 114.
	   Otherwise I might not read it till weeks later!!!!
          
Programming
Homeworks: There will be additional programming homeworks due in weeks 3,
	   4 and 5.  I prefer hard-copy submissions, but if you really can't
	   I will accept email submissions.



4. Grading:
For every assignment you will be graded out of the following 
maximum number of points available:

Program 1                      75 points
Program 2                      75 points
Program 3                     100 points
Final                         200 points
Email homeworks:   30 *  5  = 150 points
                              ----------
                              600 points

For exceptionally well done work a small number of extra credit points might
be given.

At the end of the term I will add up your points.
A curve will be used for assigning letter grades.

The following are guaranteed an A:
- If you are in the top 30% of the class you are guaranteed an A.
- If you have more than 550 points you are guaranteed an A.

5. Doubts:

>>>>>> When in doubt, ASK <<<<<<<

6. Late policies:
There will be late penalties for late submissions of programming assignments.
Details will be announced in the assignments.

7. Computer: 
You will be using C++.  There are several C++ available:
------

You can use Visual C++ in the Lab in the Parking deck, other Labs,
or get your own copy.  Many students now work on their own Lap Top.
----------------------
Or you can use a UNIX version of C++ as follows:
On AFS Solaris clients, e.g., afs1 - afs36, CC is /opt/SUNWspro/bin/CC (Forte
Compilers 6) and g++ is /usr/local/bin/g++ (GNU 2.95.1).
Also, cc is /opt/SUNWspro/bin/cc, & gcc is /usr/local/bin/gcc .
If you don't have an account on AFS, you need to get one.
See: http://directory.njit.edu/ for getting an AFS account.
------ 

It is possible to dial into AFS from outside with a modem. A lot of interesting stuff on this topic is here.

This might also be interesting information about the NJIT Computing Environment.

Dial Up Numbers are:

973-424-9665
973-468-3189

8. Prerequisites:  
This course requires that you have learned the basics of C++ as
well as the basics of computer science in a course such as CIS 113.

If you know C but not C++ you might be able to get through on your
own.  In that case I recommend that you read Appendix A of your text
book as soon as possible.  

There are "absolute" prerequisites and "recommended" prerequisites.

Absolute Prerequisites:
- Ignorance of any absolute prerequisite is a reason for an F in CIS 114.
- Absolute prerequisites are not covered in class, and no questions about them
  will be answered.

Recommended Prerequisites:
- Recommended prerequisites may be quickly reviewed in class.  If you never
  heard this material, you probably won't be able to follow.
- Recommended prerequisites may also just be assigned as reading material and
  not covered in class at all.

Here is a list of what belongs into these categories:
Absolute Prerequisites:
- The material in Chapter 1 of your text book will NOT be covered 
  in class.  You are expected to be familiar with this material.
- basics of editing, compiling, and running C/C++ programs
- elementary data types, and common operations on them
- screen input/output
- all control structures, including SWITCH and DO WHILE
- functions 
- one-dimensional arrays
- constant, typedef, and variable declarations
- rules of indentation
- rules of basic program documentation
- the concept of algorithm
- top down design

Recommended Prerequisites:
- two-dimensional arrays
- structures
- enumeration types
- pointers
- simple recursion
- loop invariants

9. Narrative Description:
This course will advance your knowledge of problem solving techniques,
and program design.  You will learn more about data structures, such
as doubly linked lists, graphs, etc.  You will learn about sorting and
the complexity of sorting.  THIS IS NOT AN INTRODUCTORY C++ COURSE.

10. Purpose of the Course:
To learn the standard solutions for sort and search problems.
To improve your ability to design and implement programs.
To learn more about abstract data types, modular programming, and
Object-Oriented programming.

11. Video Tapes and Web Page
You must view the video tapes.

CLARIFICATION:  When I say "one tape" that means "one half hour lecture".
The company is putting 2 or three lectures onto a single VHS tape.
Thus they will deliver to you 14 "boxes".  But every box contains
three (of what I call) tapes.

Besides that, I ask that you check this syllabus web page at least
THREE times a week, in case that I have an important announcement.
THE FILES WITH HOMEWORKS ASSIGNMENTS WILL BE ANNOUNCED HERE, BELOW
UNDER "DETAILS."
(Another Example: I might find a mistake in an assignment that I gave you.
Please check this syllabus first, I would let you know here that
the assignment was corrected.)


12. Cheating
Cheating on a programming homework results in 0 credit for all people
involved.  Programming homeworks may NOT be solved in collaboration,
unless this is specifically required in your assignment.

You may "talk" about problems with each other.  Where does talking end
and cheating start?  You may NOT copy lines of code from anybody.
You may NOT use code in your program where you don't understand WHY
it works, even if it works, and you wrote it yourself.

I WILL VERY CAREFULLY COMPARE SOLUTIONS OF STUDENTS.  THE CLASS IS
SMALL ENOUGH THAT I CAN DO THAT.

I WILL ALSO POLICE EXISTING PAY SERVICES. 

IF THERE IS ANY DOUBT YOU WILL HAVE TO COME IN PERSON TO MY OFFICE
AND EXPLAIN YOUR SOLUTION OR YOU WILL GET 0 POINTS.

13. Course Details:
Below is a detailed plan.  Changes in amount, content or order may occur.
Files with assignments will be listed below, as soon as I put them up.
TRY TO WATCH ONE VIDEO EVERY WEEKDAY.  Don't watch six of them on one
Sunday.  It will be too overwhelming.


Week of May 23rd:   Tapes 1-6

Homework 1 

Week of May 30th:   Tapes 7-12

Homework 2 

Week of June 6th:   Tapes 13-18

Homework 3

Program 1 DUE

Week of June 13th:  Tapes 19-24

Homework 4 

Program 2 DUE

Week of June 20th:  Tapes 25-30

Homework 4 

Program 3 DUE


Week of June 27th:  IN CLASS FINAL EXAM