CSCI 112 Programming and Algorithms II
Spring 2008
Syllabus

Instructor:
Tyson Henry


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 CSCI 111.


Registration:

Send me e-mail with your ECST username, e-mail, and PIN.


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


Note: This book is available on line for around $6.00 from Amazon Marketplace and half.com

If you want to spend more money you can buy the 5th edition for $85 from Amazon.com.  

Required Clicker:

I will be using the Turning Technologies Response Card XR (the "clicker") during lecture.  You must purchase a clicker and bring it to every lecture.

Clickers are available at the campus bookstore.  They can be sold back to the bookstore at the end of the semester.


Attendance:

Attendance of lectures is not required, but is highly recommended and can influence your course grade:

If you do poorly in the class (C- and below) attendance may improve your grade.  For example, if your grade is a high D and you have attended most lectures I may raise your grade to a C-.  On the other hand, if your grade is a C- and you missed most lectures I will lower your grade to a D.

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:

If you regularly skip class I will not answer questions on the material you missed.

Attendance of labs is REQUIRED.  For each 3 unexcused absences, 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.

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

Each midterm will be 30% of the exam grade.  The final will be 40% of the exam grade.  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.

Grading Caveat:  Mathematically it is possible to get a C in the class if you get an A on the assignments and an F on the exams (4.0 + 0.0)/2.0 = 2.0 which is a C.  However, if you get below a C- in either the exams or the assignments, the highest grade you can get in the class is a C-.  

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 had given 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%

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


Programming Assignments:

There will be 7 programming assignments due at approximately 2 week intervals starting Monday February 11.

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.


Getting Help:

CSCI 118

Help session meets Wednesday 2-4 in OCNL 244 

1-credit, pass/fail (based on attendance and effort)

Sign up on portal

UPE Honors Society tutoring

Members of the UPE Honors Society provide around 20 hours/week of drop in tutoring

There on-line schedule should be updated in the next couple days


E-mail:

I will routinely communicate with the class via e-mail. I will use the e-mail you send me in your registration email.  If you do not send me registration e-mail you will not receive my e-mail.


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