CSCI 315 Programming Languages
Fall 2005
Syllabus


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



Prerequisite:       
    

CSCI 112 (formerly 15b)  Programming and Algorithms II

If you have not completed 112 (15b) with a grade of C- or better, you may not take this class.  I could fail you in 315 even if you complete all the work if you have not taken 112 (15b).

If you took the prerequisite at another university, it must be approved for transfer before starting 315.



Overview

There are two portions to this course: 

Theory of programming languages

Learning new programming languages

The course will cover several (4 or 5) different programming languages in order to demonstrate the theory.

There will be programming assignment(s) and an exam on each language.

We will start with Python.  The other languages will most likely come from the following list:  Scheme, Prolog, Haskell, Ruby, Icon, C#, Perl.

There will be an exam after each language and a final exam.


Textbooks/References: 


The first language we will look at is Python.  There are many introductory books on Phyton.  I am using:

Learning Python, Second Edition
Mark Lutz & David Ascher
O'Reilly

This book (and all O'Reilly books) is available in its entirety via the Chico State library

http://mantis.csuchico.edu:2048/login?url=http://proquest.safaribooksonline.com/?uicode=calstateuniv

Additional references will be posted here as the semester progresses.


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
Programming Projects:     50% of course grade


Programming Assignments:

There will be several programming assignments (probably about 6-8). 

Students can work individually or with one other student of their choosing.  You may work with the same or different people on each assignment.  If you choose to work with another student, ALL WORK MUST BE DONE WHILE YOU ARE SITTING NEXT TO EACH OTHER.  I WILL CONSIDER IT CHEATING IF YOU DO NOT PROGRAM TOGETHER ALL THE TIME.


The easier assignments will be worth a smaller percentage of your grade than the harder assignments.  For each assignment, I will assign a weight when I assign the program.  However, as the semester progresses it may become apparent that the weight of an assignment is not congruent with the other assignments, and thus may be changed.

Late Assignments: 

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

Assignments turned in 24-48 hours after the due date will lose 20%

Assignments will not be accepted more than 48 hours late.


E-mail:

I will routinely communicate with the class via e-mail. I will use your ECST e-mail. If you do not routinely read your ECST e-mail, you should create a .forward file to forward your ECST e-mail to the account you routinely read. The size of your ECST 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 your ecst email via the web at:  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 expect all students to follow the University’s honesty policies (http://www.csuchico.edu/sjd/discipline/honesty.html). 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, or if you are working with another students, the two of you must complete 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 without a clear and detailed reference
copying code from a book without a clear and detailed reference
copying code from the internet without a clear and detailed reference
paying someone else to write your code
buying code
stealing code
letting someone steal your code (e.g. giving out your password, incorrect file protection)
giving your code to another student (both giving code and taking code are forms of cheating)
helping another student so much that he/she is not doing the assignment (both helping too much and getting helped too much are forms of cheating)


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


Course Objectives: