CSCI 360 - Survey of Programming Languages

Fall 2014

Course Overview:
In this course, we will examine the variety of different abstractions that programming languages make available to the programmer. As every high-level language construct is meaningful only to the degree that it is properly translated into machine language, we will examine language implementation techniques as well.

Our study will proceed in two major phases. The first phase is an in-depth study of three important languages: Smalltalk, Racket, and Haskell. Most mainstream programming languages feature a syntactical and semantic structure derived from the important language Algol-60, the prototypical procedural language. But from the earliest years of high-level languages, the Lisp family has represented a distinctive approach that is largely independent of the Algol-60 tradition. These three languages represent very diverse developments of this alternative tradition that continue to have great influence on mainstream programming languages.

In the second phase of our study, we will explore some additional programming languages in two ways. First, every student will be responsible for preparing a lesson for the class on an assigned language. Second, everyone in the class will complete a large project in a language not experienced prior to this course.

At the end of this course, you will be expected to be able to:

Instructor:
Dr. Gabriel Ferrer
M.C. Reynolds 312

Office Hours:
MTWRF: 1:30-2:30 pm
Feel free to make an appointment (http://drferrer.youcanbook.me), or to stop by whenever my door is open.

Class Web Page: http://ozark.hendrix.edu/~ferrer/courses/360/

Lecture Time: A4 (11:10 - 12:00, MWF)

Final Exam Period: Monday, December 15, 8:30-11:30 am

Grading Criteria:
Programming Assignments: 20%
Short papers: 15%
Language Lesson: 15%
Final Project: 20%
Term Paper and Presentation: 25%
Class Participation: 5%

Grading Scale:
Each assignment receives a letter grade. The grading criteria for each assignment will be described when it is assigned. Each letter grade has associated with it a percentage grade as follows:
Letter gradePercentage
A95
B85
C75
D65
F50

Missing grades will be scored zero. Any grade can have a "+" or "-" attached to it. A "+" is worth +5, and a "-" is worth -4. A grade of "A+" will only be assigned to work that in some way goes above and beyond the requirements for the assignment. For each category above, the total points earned will be divided by the total points possible to yield a percentage. These percentages will be weighted as given above. A final average of at least 90 earns an A; 80 earns a B; 70 earns a C; 60 earns a D; below 60 is failing.

Programming Assignments: Short programming assignments will be assigned throughout the semester. Some assignments may be team assignments at the instructor's discretion. Some assignments may include accompanying written assignments as well.

Short Papers: Upon completing each language study, a short paper (2-3 pages) will be assigned in which the student is to compare and contrast the studied language with any other language of the student's choice, with which the student is already familiar.

Language Lesson: Language lessons will be given by students for each of the following programming languages:

The instructor reserves the right to modify this list as he sees fit. Each student will give one language lesson. The combination of lecture and exercises will fill a 50-minute class period. Lessons will begin on November 3, and continue until the end of the semester.

For each lesson, the students will:

Final Project: The final project may be implemented in any language and with any topic upon which the student and I agree. I will mention in advance that I will not approve Java, Python, C, or JavaScript. Working in teams will be fine, with the understanding that the functionality of the final result should be proportional to the team size.

The final project will officially begin on Monday, October 27. Project topics will be determined by Wednesday, October 29. The project will be due on the last day of classes, Monday, December 8.

Term Paper: Each student will write a term paper. The paper will be due at the start of the final exam period. The paper topic is as follows:

During the final exam period, each student will give a 10-15 minute presentation. In this presentation, the student should present an argument as to why other programmers ought to adopt the highest-ranked language from the term paper.

Revisions: After assignments are graded, you are welcome to revise and resubmit your work. I will grade anew each submitted revision, and average the original and revised grades together to produce a new grade for that assignment. Revisions may be submitted anytime until the start of the final exam.

No late work will be accepted. Any work not submitted on time is a zero. However, you may submit a solution after the deadline to qualify under the revision policy above. In effect, this means that late work can earn up to half credit.

Accommodations: It is the policy of Hendrix College to accommodate students with disabilities, pursuant to federal and state law. Students should contact Julie Brown in the Office of Academic Success (505.2954; brownj@hendrix.edu) to begin the accommodation process. Any student seeking accommodation in relation to a recognized disability should inform the instructor at the beginning of the course.