CS6123 Theory & Implementation of Programming Languages

Summer 2009

 

Classes

6123-001

J-217

Tue, Thu

5:00-7:30 pm

 

Professor

Juan Carlos Guzmán

Office hours:

 

 

Tue, Thu
 

3:00-4:45pm
10:10-10:30pm

Also by appointment

e-mail: jguzman@spsu.edu

web: http://cse.spsu.edu/jguzman

Office: J-360 (2π)

Phone: (678) 915-7430

Textbook

Programming Languages Pragmatics,
3rd Edition

Michael L. Scott
Morgan Kaufmann, 2009
ISBN 978-0-12-374514-9

Catalog Description

Comparative study of programming language paradigms with emphasis on design and implementation issues. Covers formal definitions of syntax and semantics, data types, static and dynamic storage allocation, definition of operations, control of program flow, subroutine and function linkages, formal tools for characterizing program execution, and abstraction techniques.  [Academic Catalog 2007-2008]

Objective

The purpose of this course is to introduce the student to fundamental concepts on programming languages.  It presents these concepts in a variety of programming languages and language paradigms such as imperative, object-oriented, functional and logic programming.  The student will also learn elements of language design, syntax and semantics.

Course Outcome

At the end of the course, the student should be able to

Assignments

There is a total of 4 assignments: two programs, one midterm and one final exam.  The calendar below shows the date where each assignment is released.   The projects are due 5 sessions after their publication.  Although the projects will be simple in nature, the fact that you will be working on a language not familiar to you will be challenging.  The exams will be in-class.

Each project will require coding in a different programming language.  You will be provided with a suggested programming environment where to create and run your assignment.   You should start installing and familiarizing with the environment as soon as the project is posted.  Again, you should plan on working in the project early on.

All assignments are due on a class day.  They are due at the beginning of the class.  You should keep a copy of all your submitted material, as well as all graded material until your final grade is posted (to access the schedule of these assignments, please click "Assignments", to your left).

Late Policy

Home Assignments are due on the posted day, at the beginning of the class.  Assignments not turned-in in class must be submitted in person or electronically.  Assignments will be accepted after the due date with substantial penalty.  In asking for an extension, it will definitely help that you show that you have been working on the assignment.  Under no circumstance you will be allowed to have two past-due assignments at any given time.

Grading

Your final grade will be determined by the following schedule

Cumulative Grade

Letter Grade

90% and above

A

80%-90%

B

70%-80%

C

below 70%

F

Academic Dishonesty

All individual assignments are meant to be done individually.  All group assignments are meant to be solved by each individual group.  Collaboration is permitted in areas like installing the programming environment, and even in sharing references with others.  However, it is not permitted that you share your own code (your group's code) or your own written documents (your group's written documents).  Studying in groups is permitted, acknowledged and encouraged.  However, group study is not an excuse for identical submissions.

The penalty for academic dishonesty will be zero in the assignment, lowering the final grade up to two letters (in addition to not getting credit for the assignment), and reporting this incident to the CS Dept., which may take additional actions.  The following sources may give you background information on the subject: http://www.spsu.edu/cs/faculty/bbrown/papers/conduct.html (academic conduct), and http://www.spsu.edu/cs/faculty/bbrown/papers/gshpla.html (plagiarism and references).

Students with Disabilities

Students with disabilities who believe that they may need accommodations in this class are encouraged to contact the counselor working with disabilities at (678) 915-7244 as soon as possible to better ensure that such accommodations are implemented in a timely fashion.  For more information, visit http://www.spsu.edu/attic/Dis_Svcs.html.

Registration Problems

If you are majoring in Computer Science, Software Engineering or Information Technology and have questions about your schedule or you are having registration problems, please contact Ms. Beth Haynie, Academic Advisor for CS, IT and SwE, at J-375 or call (678) 915-4292 and ask for an appointment.

Class Attendance

You are expected to attend classes regularly.  You will be responsible for all announcements made in class, even if you have not attended.   The professor will keep a record of your attendance.  Class attendance does not count towards your final grade, however, class interaction will count 10% towards your grade.

The class schedule given below is a tentative plan of the classes.   You should read the material related to the class before the corresponding class.  Sometimes, the exams might contain up to 25% of topics covered in the book, but not in class.

Policy on Electronic Devices

The students must turn off set their electronic devices such as cell phones, blackberries, pagers, etc.  Otherwise, they must be put in either silent or vibrating mode so that class is not interrupted in the event of a call.

Calendar

Class Period: Mon, 18/May--Thu, 09/Jul
Withdrawal Deadline: Thu, 18/Jun
Final Exam Period: n/a
Holidays: Memorial Day (Mon, 25/May), Independence Day (Sat, 04/Jul)
Graduation: Sat, 01/Aug
Final grades posted: Mon
, 20/Jul

We will follow the topics of the text.  The midterm exam will be on 11/Jun, the final exam will be on 09/Jul.

Contents of the Textbook

Ch.

Short Name

Description

1

Intro

Introduction

2

Syntax

Programming Language Syntax

3

Scope

Names, Scopes, and Bindings

4

Semantics

Semantic Analysis

5

Computer Arch

Target Machine Architecture

6

Control Flow

Control Flow

7

Data Types

Data Types

8

Subroutines

Subroutines and Control Abstraction

9

ADT OOP

Data Abstraction and Object Orientation

10

FP

Functional Languages

11

LP

Logic Languages

12

Concurrency

Concurrency

13

SL

Scripting Languages

14 Runnable Program Building a Runnable Program
15 Run-Time Run-Time Program Management
16 Code Improvement Code Improvement

Return to the top of the Page