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 |
Also by appointment |
||
e-mail: jguzman@spsu.edu |
||
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 |
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]
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.
At the end of the course, the student should be able to
know and understand how different features of programming languages are implemented -- how high-level constructs can be implemented in the underlying machine
understand the functional and logic paradigms of programming and implement simple applications in them
understand how syntax and semantics for artificial languages are described. The student will be able to use elements in language design to design and implement simple languages.
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).
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.
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 |
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 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.
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.
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.
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.
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.
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 |