CSCI 112 Programming and Algorithms II
Spring 2009
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.

Students must sign the prerequisite form to remain in the class.


Registration:

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

Log on to Blackboard/Vista and go to the 112 page.  Select the clicker registration icon.  Fill in the device code from the back of your clicker.


Required Textbook:  (available at the CSUC bookstore)


Data Abstraction and Problem Solving with C++,
5th edition
by Frank M. Carrano
(2006) Addison-Wesley Pub Co: ISBN: 0-321-4332-7

If you want to save some money, you can use the 4th edition:

Data Abstraction and Problem Solving with C++, 4th 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


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.

If you don't purchase a clicker it will affect your grade.

You must log onto Blackbord (WebCT, Vista) to register your clicker.


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 4 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 8 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 #1:  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-. 

Grading Caveat #2:  If you don't purchase a clicker and use it during lecture I will lower your grade one notch (e.g. from B to a B-).

Grading Caveat #3:  If you miss more than 3 unexcused labs I will lower your grade one notch.

Grading Caveat #4:  You must get at least 3 of the programs mostly working to get a C- in the course.  This means you should start early.

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 Sunday 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.


Getting Help:

CSCI 211x

Help session meets Mondays 2-4 in OCNL 244 

1-credit, credit/no credit (based on 50% attendance -or- getting a C- or better in 112)

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

Student Learning Center (SLC)

The Student Learning Center offers regular tutoring.  They currently don't have anyone signed up to tutor CSCI 112 but if students go there and request a 112 tutor they can hire someone to tutor it.  So if you think regular tutoring would be helpful go to SLC during the first week of the semester.


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.


Responsibilities:

I am responsible for providing useful and interesting (or at least entertaining) lectures, meaningful and challenging assignments, challenging exams, abundant help, encouragement, advice, and most anything else I can do to help you learn the material.

Students are responsible for dedicating the time and effort necessary to learn the material.  The amounts of time and effort required varies drastically.  It may take you two hours/week to get an A in this class.  It may take you 20 hours/week to get a C.  It is your responsibility to figure out how much time you require and to invest that amount of time appropriate for you.

You will not learn the material if you don't put in the time and effort required.  If you don't learn the material you will not be prepared for the subsequent classes and you will probably be very disappointed with your grade.  While I will feel bad that I had to assign you a bad grade, if you don't put in the time necessary for success I will be forced to give you a low grade.  The University requires that I assign grades based on your performance.


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
getting your friends to write your code
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.


Religious Holidays

I will work with students so this class and its assignments, exams, and activities do not interfere with religious holidays.  Please notify me ahead of time so we can make appropriate arrangements.



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