For meeting times and location, office hours, and contact information, please visit http://www.sjsu.edu/people/cay.horstmann.
The schedule is subject to frequent change; visit it before each class meeting.
This course covers advanced issues in programming languages of current interest.
Topics covered:
For the official catalog description, please visit http://info.sjsu.edu/web-dbgen/catalog/departments/CS-courses.html.
Why take this course? Programming languages are once again a hot topic. Traditional languages such as C++ and Java have serious limitations, and their users have become restless. Have a look at dzone.com and observe how many blogs are about Scala, Groovy, Ruby, and other emerging languages. You will learn what is special about these new languages, what kinds of problems they solve that are difficult in traditional languages, and how they aim to make software developers more productive. Most importantly, you will learn to analyze trends in programming language design and to make good language choices for your projects.
CS 152, in particular functional programming (Scheme or a related
language), and compilation and runtime data structures (symbol tables, stack
frames, etc.). If you are registered for the class, you must email me
your answers to the prerequisite quiz by 23:59 of
the day indicated in the schedule, or I will drop you from the class for
failure to fulfill the prerequisites.
Specifically, the following skills are assumed:
There is no required text. The following books are recommended.
John C. Mitchell, Concepts in Programming Languages, Cambridge University Press 2003
Martin Odersky, Lex Spoon, and Bill Venners, Programming in Scala, Artima 2008
Upon completion of this course, the successful student will be able to
Exams are curved and given letter grades with + or -. Each graded task (assignment, project, etc.) is graded as a letter grade, using the following scale.
A = all (or almost all) of the task solved and delivered in a professional
manner
B = most of the task solved, but at least one key issue missing, or significant
issues with delivery
C = some of the task solved, with at least half of the key issues resolved, but
at least two key issues missing
D = a solution has been attempted, with at least one but but less than half of
the key issues resolved
F = no solution has been attempted, or the attempted solution did not resolve
any of the key issues of the task
Letter grades are converted into number grades and weighted with the percentages given in the Course Requirements section. The weighted average is rounded towards the nearest letter grade, which is your class grade.
Add Policy: To add the course, you must submit your solution to the prerequisite quiz. I will randomly choose among add requests that I receive before the second class meeting time, and in the order of receipt thereafter. If there is space, I will reply to your email with an add code. You must use your add code within 48 hours and email me to confirm that you added the class, or the add code will be reassigned to someone else.
Publicly Viewable Work: Your class work (including homework, exam, and project work) may be viewable by other students of this course. Your grades will not be viewable by others.
Copyright of Materials: All materials created by the instructor for this course, including lectures, handouts, homeworks, exams, solutions, projects, and so on, are copyrighted property of the instructor. You may transscribe or record lectures or copy course materials for the use of yourself and other students registered in this course. You may not sell or give transscriptions or recordings of lectures or copies of course materials to others without the prior written consent of the instructor.