CSCI 315 Programming Languages
Fall 2005
Syllabus
Instructor:
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:
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.
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:
- At the end of the course you should be familiar with several
different programming paradigms.
- You should be competent programmers in all of the languages
covered.
- You should no longer be daunted by the prospect of having to
learn a new programming language.