CSCI 310 Organization of Programming Languages

Section 01

Meeting Time/Place:     MWF 12-12:50pm Fitzelle 300

Prerequisites:               CSCI 203

Instructor:                    Don Allison

Office:                          225 Fitzelle Hall

Phone:                         436-3439

Email:                          allisodl@oneonta.edu

Office Hours:                Tuesday 2-3pm

                                    Thursday 2-5pm

                                    Friday 3-4pm

                                    Others by appointment (or just drop by)

 

Text and Software:  The text for this course is Programming Languages: Principles and Paradigms, by Tucker and Noonan, ISBN 0-07-238111-6, published by McGraw-Hill in 2002.  We will also be using several different computer languages for various programming projects.  These will be available in the department lab.  If you want to install them on your personal computer, you can find them at the following sites:

 

GNU Common Lisp: http://clisp.cons.org/

SWI Prolog: http://www.swi-prolog.org/

Python: http://www.python.org/

Python tutorials: http://www.python.org/doc/

 

Course Description (from the catalog):  Analyzes programming languages in terms of their features and limitations based on run-time behavior.  Presents two or three languages for in-depth study.  These may include, for example, SNOBOL, LISP, Prolog, APL, and PL/1.  Students complete applications projects chosen specifically to exhibit the power and limitations of languages presented.

 

Course Description (the inside scoop): The purpose of this course is to examine the features of programming languages, why they were designed the way they were, and how they are implemented.  We will examine three main programming paradigms: functional programming, logic programming, and procedural/object-oriented programming, spending the most time on the latter.  The current programming language landscape will also be placed in historical perspective so that students may appreciate how hardware and programming language capabilities evolved together and how software engineering has driven and been driven by programming language development.

 

Course Goals  By the end of the course students should be conversant with the different programming paradigms, and should have experienced the process of learning a new language on the fly while also using it to complete a project.  Students should have a reasonable grasp of the basic features of programming languages, and how each feature affects the implementation of that language.

 

Tentative Schedule:

 

Date

Monday

Tuesday

Wednesday

Thursday

Friday

Jan 14-Jan 18

 

Last day to register

Classes begin

Add/drop begins

Read Chapter 1

Overview and History

 

background assignment due

(send as attachment)

Jan 21-Jan 25

Martin Luther King Day – admin offices open

 

Add/drop ends

Last day to sign up for P/F

Read Chapter 8

Functional Programming & Lisp

 

 

Jan 28-Feb 1

 

Last day to add a full semester course

Groundhog Day

 

 

May graduation application deadline

Feb 4-Feb 8

 

Mardi Gras

 

 

TAP Certification begins

Lisp assignment due

Feb 11-Feb 15

Read Chapter 9

Logic Programming & Prolog

 

MIDTERM EXAM #1

Sample Exam

Valentine’s Day

College closes after last class

Feb 18-Feb 22

President’s Day

Break

Break

Break

Break

Washington’s Birthday

Break

Feb 25-Feb 29

Classes resume

Graduate admissions applications due

 

 

 

Leap Day

Mar 3-Mar 7

 

Read Chapter 2

Syntax

 

Prolog assignment due

Mar 10-Mar 14

 

 

Interim grades due from faculty

 

 

Mar 17-Mar 21

St. Patrick’s Day

Read Chapter 3

Types & Semantics

 

MIDTERM EXAM #2

Purim

 

LAST DAY TO DROP A CLASS

College closes after last class

Good Friday

Baha’i New Year

Mar 24-Mar 28

Break

Break

Break

Break

Break

Mar 31-Apr 4

Classes resume

 

Read Chapter 4

Imperative Programming

 

Python assignment due

Apr 7-Apr 11

 

 

 

 

Read Chapter 5

Memory Management

Apr 14-Apr 18

Last day for students to make up I or P grades from fall 2007

 

 

 

 

Apr 21-Apr 25

Begin fall pre-enrollment

Read Chapter 6

Exceptions

Earth Day

 

Last day to withdraw from college

 

Apr 28-May 2

Last day for faculty to turn in grades to replace I/P grades

Read Chapter 7

OO Programming

 

 

Holocaust Remembrance Day

Language Design project due

May 5-May 9

Cinco de Mayo

Presentation of Language Design Projects

Last day of class

STUDY DAY, no classes

Final Exams Begin

8-10:30am TR10

11am-1:30pm TR4

2-4:30pm TR12

8-10:30am MWF10

11am-1:30PM MWF2

2-4:30pm MWF12

FINAL EXAM 2pm

May 12-May 16

Mother’s Day was yesterday—did you remember??

8-10:30am MWF9

11am-1:30pm MWF1

2-4:30pm MWF11

8-10:30am TR8

11am-1:30pm TR2

8-10:30am MWF8

11am-1:30pm MWF3

Final Exams End

 

Commencement, Saturday May 17

 

 

Attendance Policy:  Attendance is STRONGLY encouraged.  Attendance will be taken at random class meetings.  All college policies regarding attendance will be followed.  You will be responsible for material covered in the as well as the material in the text.  In addition, we will be discussing the exams and programming projects in class, writing sample code for them, and so on, as well as answering questions about the assigned material, so it is in your best interest to attend class as much as possible.

 

Collaboration Policy:  Cheating or other academic dishonesty hurts others as well as yourself and will not be tolerated!  Since one goal of this class is to provide you with experience with larger programming projects similar to those in the real world, like the real world it IS acceptable to collaborate with your classmates, under certain conditions.  All work submitted on the exams should be yours and yours alone.  It IS acceptable to discuss the programming projects among yourselves, AS LONG AS any code you turn in you have written yourself!  You should also be able to answer any questions I have about your code—in other words, you should be able to explain the algorithms and data structures you are using in your program if I ask.  Plagiarism can get you in trouble in the “real world”, and it will get you in trouble in this class.  You should credit any code that you did not write yourself, and you should provide references to algorithms and data structures you use!

 

Programming Style Guidelines:  Since this is an upper division course, it is expected that your programs will follow good programming style conventions for the language you are using.  You should indent your code to reflect its internal structure.  You should use block comments to explain what your code is doing at a high level.  Each function should have a header that gives the function name, the inputs, the output(s), and lists any side effects, as well as providing a two or three sentence summary of what the function does.  In addition, your main program file should have a block header similar to the following:

 

! CSCI 310 Organization of Programming Languages, Spring 2008

! Program #1: Functional Programming

! Author: Don Allison

! Date Due: 8 February 2008

!

! This program illustrates the functional programming paradigm.

 

Your header should include the course name and number, the assignment number, your name, the program due date, and a two or three sentence description of the purpose and function of the program.

 

Program Turn-in Procedure: You should zip up your source files, include files, and any data files needed to run your program.  In addition, you should create a README file that describes the steps I’ll need to take to compile and run your program.  The zip file should be emailed to me, allisodl@oneonta.edu, as an attachment, with a subject line such as (if your name were Don Allison and you were turning in the Procedural Programming program) Procedural Programming program turnin: Don Allison.  Make sure you turn in all the required parts!!!

 

Grading and Other Administrivia:

Exams: There will be a two midterm exams and a final.  Each midterm exam will contribute 15% of your grade, while the final will contribute 20%.

 

Programming Projects: The programming projects are an integral part of the course.  There will be three large projects, each of which will be composed of several smaller programs.  Each of these projects will count 10% towards your final grade.  The projects will be implemented in Lisp, Prolog, and Python.

 

Language Design Project: There will be a semester long language design project.  In this project, you will take a problem and solve it by designing a special purpose language for it, using the concepts we have been studying throughout the semester.  You will present your language and discuss its design the last day of class.  This will count as 15% of your grade.

 

Homework, etc:  The remaining 5% of your grade will be determined by your grades on homework assignments, class participation, etc.

 

Grade Computation:

 

 

Weight

Tentative Date

Midterm Exam #1

15%

February 13

Midterm Exam #2

15%

March 19

Final Exam

20%

May 9, 2pm

Lisp Programs

10%

February 8

Prolog Programs

10%

March 3

Python Programs

10%

April 4

Language Design Project

15%

May 2

Class Participation / Homeworks

5%

 

Total

100%

 

 

 

Make-up Test and Late Assignment Policy:  Late assignments will be assessed a 10% penalty for each day that they are late.  Assignments are considered due by 11:59PM on their due date, and any turned in after that time but before 11:59PM the next day will be assessed a 10% penalty.  After 11:59PM of the next day, the penalty will be increased to 20%, and so on up to a maximum penalty of 100%.  Note that weekends count as a single day, ie Saturday and Sunday together just add a 10% penalty.  All assignments must be turned in by the last day of classes for them to count toward the course grade.  You should plan to be present for all the tests and the final exam.  Any makeups will be allowed only for legitimate, school-approved excuses, and should be arranged with the instructor as soon as possible after you discover you can’t attend the exam (before the exam is given whenever possible).  In any case, all work must be completed by the last class, including any makeup exams.  Exams missed for unexcused absences, or exams not made up by the last day of classes will be recorded as a zero grade.

 

Additional resources:  for students wishing to explore further or to find answers to questions not covered in the text, there are many books and journals available.  The following books are just a sampling of the wide diversity out there (these are some that happen to be in the campus library):

 

A Programming Language, Kenneth Iverson, 1962, QA 76.5 .I9 (covers APL)

The Little LISPer, Daniel Friedman, 1987, QA76.73.L23 F74 1987 (gentle intro to Lisp)

Common LISP