CS A109: Selected Programming Languages: Multimedia Programming in Python

Course Syllabus, Spring 2006 Textbook

Software: This course uses the Python programming language, or more specifically, Jython, a Java implementation of Python.  All of the necessary software will be available on the computers in the CS Lab.  It is also available on a CD that comes with your textbook and runs on Macs, Unix, and Windows.  As part of our Academic Alliance agreement with Microsoft, students may obtain a copy of Microsoft Windows XP or other Microsoft development software to install on your computer at home as long as the software is used for non-commercial academic use.  Contact your instructor if you would like to participate or for further information.

Course Description: The objective of this course is to introduce students to the fundamentals of computer programming and problem solving using Jython.  The emphasis is on the fundamentals of structured and object-oriented programming, syntax, semantics, control structures, arrays, file I/O, testing/debugging, implementation, algorithms, and the construction of graphical user interfaces.  The context for teaching these programming concepts is multimedia.  We will apply these concepts to manipulate digital images, sound, movies, text, and web pages.  The intent is to make the course more fun than a "traditional" course that covers more business-style applications.

Upon completing the course students will understand:

Lab Assignments:   There will be a "lab session" held in class approximately every other week.  Lab assignments are due at the end of the day.  Late lab assignments will not be accepted without a valid excuse.   You can also complete the lab on your own and email the program to me if you wish.  The lab assignments will be available on the course web page before each lab.

Computer Science Lab Facility:   When working on your homework, you can use t he lab is located in CAS 170A. You must have a UAA wolfcard to gain access to the room.  Log in with your UAA username and password (if that doesn't work, try a blank password).

Lab technicians: Be careful not to abuse the goodwill of the lab technicians. Their jobs are to help you by making sure that you have the resources that enable you to do your work. They are NOT obligated to train you in using the hardware or software. They are there if a computer is broken, you can't print, can't log in, etc.  If you need help in understanding a homework problem please confer with me or your fellow students.

Lab tutor: There will hopefully be an upper-division CS student serving as a lab tutor for approximately 2 hours each day (hours are variable, but will likely be after class). The tutor is there to help you with any programming issues that you may have on a first-come first-served basis. 

Homework Assignments:   There will be approximately 5 problem assignments throughout the course, although this is subject to change.  I prefer the assignments be turned in via email with an attachment for your program.

Late Homework Assignments:   Assignments will be accepted late only up to the date that solutions are posted online.  Homework will not be accepted after the date solutions are posted.  Generally, solutions will be posted one week after the due date, but this may vary.  For example, solutions may be posted the same day homework is due if there is a test coming up.  The homework grade is penalized 5% for each day late.

Questions: If you have any questions, feel free to come in to my office.  In general, I have an open door policy -- if I am available in my office, you are welcome to come by.  An even better way to reach me is through email.  I check my email frequently and you should receive a response quickly.  Email is preferred over telephone and you will probably receive a faster response since I don't check voicemail very frequently.  You can also contact me online via ICQ, AIM, or MSN Messenger (see contact info on the home page).  I'm often up late and will be glad to answer questions if I'm available! 

Exams:  There will be one midterm and one final exam.  If you must miss an exam, notification must be made in advance.  Exams will consist of problems to work through. Typically you will either have to describe the output of some code, write some code yourself, or provide short answers.  Each exam will be cumulative since the course material builds upon previously covered material!  This means you must keep up in the class, or you will quickly find yourself lost.  You will be allowed open-book access for the exams.

Grading:  Exams will be graded and returned to you. Grades will be posted on the web site throughout the semester. This summer we will be testing a new graphical password system. If you experience difficulties with the technology then let me know and an alternate means of grade notification will be made available.

Grading breakdown:

Homeworks:  30%   (each homework assignment is worth an equal amount)
Lab:              20%   (each lab assignment is worth an equal amount)
Exam 1:         25%
Exam 2:         25%

The grade scale is shown in the table below.  The grading curve may be lowered if necessary but it will not be raised.  This means that if you received an 89% then you will at least get a B+, but may receive a higher grade based on the curve.  (Final grades don't include a + or -).

An incomplete grade will only be given for a valid excuse (e.g. medical, death in the family). An incomplete grade does not let you take the class over again, your final grade will be assigned based on work submitted in class and work that remains to be submitted.

Cheating: Students are expected to uphold the UAA standard of conduct relating to academic dishonesty outlined in the UAA catalog and student handbook.  Cheating is not tolerated and constitutes grounds for dismissal.  For this class, it is permissible and encouraged to assist classmates in general discussions of how to attack the homework problems. It is not permissible to copy another's work (or portions of it) and represent it as your own.