CSCI 112 Programming and Algorithms II
Spring 2006
Syllabus

Instructor:
Tyson Henry
OCNL 224, 898-5709, tyson@ecst.csuchico.edu
Office Hours: Monday 3:00-4:30, Tuesday 4:00-5:00, Wednesday 3:00-4:30, Friday 11:00-12:00 and by appointment (send e-mail). My complete schedule.

Teaching Assistants:
        to be determined


Prerequisite:       
    
CSCI 111 (formerly 015A(or approved equivalent, check with your advisor)

Students transferring from a California community college can check on the assist website to find out what courses are equivalent to our 15A.


Required Textbook:  (available at the CSUC bookstore)

Data Abstraction and Problem Solving with C++, 4rd edition
by Frank M. Carrano
(2005) Addison-Wesley Pub Co; ISBN: 0-321-24725-6

    If you want to save some money, the previous edition of the book is very similar and sells on-line for about $3.00

Data Abstraction and Problem Solving with C++, 3rd edition
by Frank M. Carrano and Janet J. Prichard
(2002) Addison-Wesley Pub Co; ISBN: 0-201-74119-9

Optional Reference Books:  (not listed as a textbook in the CSUC bookstore):

Provides a good introduction/tutorial to C++:

C++ From the Ground Up, 2nd edition,
by Herbert Schildt,
Osborne Press, ISBN: 0-07-882405-2

A complete reference manual for C++ by the creator of C++:

The C++ Programming Language, 3rd edition,
by Bjarne Stroustrup,
Addison-Wesley Pub Co; ISBN 0-201-88954-4



Attendance:

Attendance of lectures is not required, but is highly recommended. You will be responsible for all material covered during lecture. Missing class can make the projects and exams especially difficult. If I verbally change the requirements of a project during lecture, you are responsible for meeting the new requirements. If you miss a class make sure you get notes from another student.

Attendance of labs is REQUIRED.  For each 3 unexcused absenses, your course grade will be lowered one notch.  For example, if you get a B in the course but miss 4 labs, you will get a B-.  If you miss 7 labs you would get a C+.




Grading:

Grading is relative. The students that do the best work will get an A, the students that don’t do as well will get a B, and so on. I do not follow the traditional percentage grades of 90% = A, 80% = B, etc., and I do not grade on a curve that defines how many students will receive each grade.

I suggest you read my advice on how to get an A.

Students will receive a letter grade A-F (4.0 – 0.0) for each category (1 for exams, 1 for projects). The course grade will be a weighted average of the individual letter grades (see category percentages below). This mechanism allows for relative grading of each category (e.g., if the best score on the exams is a 60%, that student will probably receive an A for the exams, thus an A (not the 60%) will be averaged with the student’s other grades).  This grading mechanism means that you have to get an A on both the assignments and the exams to get an A in the course.


I will routinely post the grading spreadsheet (grades). If you are not happy with a grade, talk to me immediately. If you do not talk to me within a week of the posting of a grade, I will assume you think the grade is fair and accurate, and you will lose your right to dispute the grade.

Grade category percentages

Exams 50% of course grade  (2 midterms and a final)
Programming Projects 50% of course grade

The midterm exams and final will have equal weight. The final will be cumulative. All exams will cover material from the lecture, the textbook and the programming projects.  The exam dates and exams from prior semesters is on the exams page.

As an example of how I distribute grades, when I taught 112 in Fall 2002 I gave the following percentages of each letter grade.  All the people that failed, gave up--they stopped turning in assignments, and stopped attending lecture.

A      12%
A-    10%
B+    13%
B      13%
B-      3%
C+     3%
C       5%
C-      3%
D+     5%
D       5%
F      28%


Programming Assignments:

There will be 7 programming assignments due at approximately 2 week intervals starting Wednesday February 8.

The easier assignments will be worth a smaller percentage of your grade than the harder assignments.

Late Assignments: 

Assignments turned in 1-24 hours after the due date will lose 15%

Assignments will NOT be accepted more that 24 hours after the due date.


E-mail:

I will routinely communicate with the class via e-mail. I will use your ECC e-mail. If you do not routinely read your ECC e-mail, you should create a .forward file to forward your ECC e-mail to the account you routinely read. The size of your ECC mailboxes is limited. If you let too much mail build up, you will not be able to receive new mail and thus might miss some important class information.

I will also post e-mail I send to the class at e-mail sent to class.

You are required to read e-mail I send to the class.  Due to the nature of programming, e-mail is the best way to send updates on assignments.  I suggest that you make sure your e-mail is working (by comparing e-mail you've received from me to that posted on the class web site) and that you check the class e-mail when working on class assignments and before exams.

You can read ECC e-mail through the webmail interface:  http://webmail.ecst.csuchico.edu/src/login.php



Honesty:

I will fail students who cheat.  I do not give second chances.  It is not a good idea to cheat in my class.  Don't underestimate my ability to catch people who cheat, I catch cheaters every semester.  I suggest you read my cheating policy.

I expect all students to understand and follow the University’s honesty policies (http://www.csuchico.edu/prs/EMs/EM04/em04_36.htm). I will fail students who do not follow these policies, even if they don’t understand them. It is your responsibility to understand these policies.

The bottom line is that you must do all the assignments on your own. Turning in code that anyone else wrote is cheating and will result in failing the course.  Here are some examples of cheating:

copying code from another student
copying code from a book
copying code from the Internet
paying someone else to write your code
buying code
stealing code
letting someone steal your code (e.g. giving out your password, or using incorrect file protection)
giving your code to another student (both giving code and taking code are forms of cheating)
getting so much help on an assignment that you are no longer doing the assignment (this can come from one helper or many helpers)


On the other hand, you are allowed to discuss projects and you may get help each other find bugs.  Just make sure you don't get so much help that you are no longer doing the work.

I reserve the right to catch cheaters after the end of the semester.  Just because a cheater makes it to the end of the semester without being caught does not mean he or she has gotten away with it.  Since I keep assignments it is possible for me to catch cheaters after the fact.  For example, assume your friend George gives you his old program and you turn it in.  Next semester George might give his program to someone else and I could catch it.  Now I will look through all old programs to see who else George has given his program to.  One of my advantages is that I can use programs to look for all instances of an assignment over the past several years.  And while I might not catch everyone, I am always amazed at the people I do catch.


Course Goals:

· Introduce object oriented design and implementation
· Introduce the concept of abstract data types (ADT)
· Provide an overview of algorithmic complexity
· Provide several challenging programming assignments

Course Outcomes:

· Increase the students’ technical maturity level
· Increase the students’ programming ability