345: Programming Language Paradigms
Spring 2012
MWF 2:15pm - 3:20pm HR509
Instructor: Terence Parr
TA: Tim Likarish likarish at gmail
Office hours: Any time HR531 door is open or by appointment
First day of class: Monday,January 23, 2012
Last day of class: Wednesday, May 9, 2012
Exam 1: March 9, 2012 (Friday)
Spring break: 312-16 M-F
Exam 2: May 9 (last day of class)
Abstract
Requirements
CS245 is required background and is critical to the successful completion of the class. Undergraduates will have had some Python (CS110) and more in-depth C (CS220). Students must be comfortable with:
- Writing medium-sized programs in Java
- Small Python programs, classes, objects, functions
- Core C language syntax, pointers, arrays, structs, functions
Your first project will test your knowledge of C and data structures using a simple algorithm to traverse a graph. Either you must have sufficient knowledge of C to do the project or learn it quickly.
Topics
Lecture notes
Projects
See CS345 Projects
There are no late projects.
I will deduct 10% if your program is not executable exactly in the
fashion mentioned in the project.
Instruction Format
Class periods of 1:05min each 3 times per week for 15 weeks.
Instructor-student interaction during lecture is encouraged.
We will have weekly online quizzes.
Expect projects and other outside work in this class to be a minimum of 8 hours per week.
Grading
Your grade will be computed according to the following relationship:
| 10% | Labs/Quizzes/Class participation |
| 60% | Projects |
| 15% | Exam
1 (March ?) |
| 15% | Exam
2 (May 9) |
Please note that class participation is part of your grade. You must
learn to interact with other developers and come up with solutions.
In general, I will read all papers, projects, quizzes
etc... two times. Once to evaluate the average and a second time to
assign scores. In the first pass, I also come up with a scoring
strategy for each question.
I consider an "A" grade to be above and beyond what most
students have achieved. A "B" grade is an average grade or what you
could call "competence" in a business setting. A "C" grade means that
you either did not or could not put forth the effort to achieve
competence. An "F" grade implies you did very little work or had
great difficulty with the class compared to other students.
I will be very strict and set a high standard in my grading,
but I will work hard to help you if you are having trouble. Some
of you may not get the grade you were hoping for in this class, but I
will do everything I can to make sure you learn a lot and have a
satisfying educational experience!
Misc
Unless you are sick or have a family emergency, I will not change
deadlines for projects nor exam times. For example, I will not give
you a special final exam just because you want to fly home early.
Consult the university academic calendar before making travel plans.
If you have special needs, I am happy to accommodate.
In any emergency or special needs situation, I will need formal acknowledgment from the Dean's office before I can make allowances.
Books and resources
We will be using my Language Implementation Patterns book for its content on parsing, static type computations, simultaneously, and interpreters.
No doubt that you'll find the following resource useful:
Compiling, Executing, and Jar'ing Java Code.
jclasslib
Java .class file viewer
We have academic licenses (so far) for:
CS345 Mailing List
I will be sending important information to this mailing list. You are
required to sign up for this list. To sign up:
CS345 mailing list.
To post, email cs345@cs.usfca.edu.
Miscellaneous
Tardiness. Please be on time for class. It is a big distraction if you come in late.
Academic honesty. You must abide by the copyright laws of the
United States and academic honesty policies of USF. If told you may
for a particular project, use any code from the net that you find as
long as it does not violate the software's license. You may not
borrow code from other current or previous students. All suspicious
activity will be investigated and, if warranted, passed to the Dean of
Sciences for action.
Official text from USF: As a Jesuit institution committed to cura personalis- the care and
education of the whole person- USF has an obligation to embody and
foster the values of honesty and integrity. USF upholds the standards
of honesty and integrity from all members of the academic
community. All students are expected to know and adhere to the
University’s Honor Code. You can find the full text of the code
online at honor code.
The golden rule: You must never represent another person's work as your own.