| Department of Computer Sciences |
![]() |
Check my WWW page for upto date information, you are welcome to send me e-mail at ryan@cs.fit.edu.
Lectures are from 3 to 3:50 Monday, Wednesdays, and Fridays in Olin Physical Sciences Center (OPS), room 144.
The class has a mailing list on the Florida Tech
new Sympa list server.
Please join, read and contribute to it.
Important announcements will be sent to the list.
Members can receive all e-mail sent to the list;
also anyone can view the lastest postings via RSS:
CSE 4250 Programming Language Concepts. A survey of programming language concepts and design principles of programming paradigms (procedural, functional and logic). Topics include a history of programming languages, data types supported, control structures and run-time management of dynamic structures. Prerequisite: CSE 2010.
This is a course in comparative programming languages. We learn the fundamental concepts important to the field. We will study the major programming language paradigms: imperative, logic and functional. Among the other topics discussed are syntax, semantics, types and objects, exception handling, and modules.
Students are expected to know how to program in an imperative language like Java, Ada or Pascal, and to know about algorithms and data structures. Such material is taught in CSE 1001, 1002, 2010 in the undergraduate curriculum. Some mathematical sophistication is desirable. The more you know, the more you learn.
The textbook for the class is:
| Sebesta |
Robert W. Sebesta. Concepts of Programming Languages, ninth edition. Boston, Massachusetts: Addison-Wesley, 2010. ISBN13: 978-0-13-607347-5 |
![]() |
The book has plenty of good material, you should read all of it. For the most part, the material is not hard. The reading assignments from the book are given below in the syllabus. It is helpful to read the book before we get to the topic in lecture, so the reading assignment should be completed by the indicated week in the syllabus. Some exam questions may come from the book even when we must cover some topics only briefly in lecture. (No questions will come from chapter 13 or from sections 4.3 and 4.4.) We cover the material roughly in the order in the book, but not exactly. We will cover the last chapters of the book in more depth, so the lecture notes or other resources will be especially important at the end of the semester.
You may wish to read other textbooks that cover roughly the same material: Mitchell, Scott (implementation), Stansifer (advanced topics).
| Mitchell |
Mitchell, John Clifford Concepts of Programming Languages. Cambridge, England: Cambridge University Press, 2003. ISBN: 0-521-78098-5 |
![]() |
| Scott |
Michael Scott. Programming Language Pragmatics, second edition. Morgan Kaufmann, San Francisco, California, 2006. ISBN 1-12-633951-1. |
![]() |
| Stansifer |
Stansifer, Ryan. The study of programming languages. Prentice Hall, 1995. ISBN: 0-13-726936-6 |
|
Three kinds of supplementary course material are available on the Internet:
There will be two in-class midterms and a final exam. There will be a short quiz at the begining of class. Each quiz will be worth a few points to encourage punctuality, attentiveness, and attendence in class. These points will be added to the point total for exams and cannot be made up. In addition, we anticipate that there will be several projects. The grade for the course will be based 60 percent on the exams, 40 percent on the projects.
I tend to grade using the entire scale and not just the top end. This means that your numeric score may be lower that you are accustomed. This does not necessarily mean you are doing badly. Your grade is determined mostly by how you do compared to the rest of the class, not by how hard or easy the tests are. If there are many students in the class, the average numeric score is roughly equivalent to a B- letter grade. Hence, a rough way to tell how you are doing in the class is: above average numeric score means A or B, below average means C or D. The letter grade for the class will be assigned to each student at the end of the semester. Cutoffs based on the weighted sum of these numeric scores will determine the letter grade. Sometimes I have to make some very tough choices; invariably someone in the class must receive the highest B, the highest C, etc in the class. Your best strategy is to not make it close.
For each student the numeric scores for the assignments and exams are recorded. If you have any question about your standing in the class, or if some score has been recorded wrong, please contact me.
Students are expected to take the final exam at the scheduled time during finals week. Academic misconduct, such as representing someone else's work as your own, will result in a grade of 'F' for the class. Please keep in mind the CS honor code. If you receive ideas, code, or help from any source, be sure to give proper credit and acknowledgment.
Please note, that all coursework (homework, projects, exams, etc) is archived. This is done for two purposes. For review by accrediting agencies, for the purposes of maintaining the accreditation of the CS program, and to detect plagiarism.
There will be several projects in this course. The first project is write a FORTRAN program for Gaussian elimination. The projects are not especially hard, but learning new languages takes time. Leave time to experiment and learn---that's the point of the projects. Do not wait until the last week to start the projects. It is wise to write at least one simple program in the language, before starting the project.
Writing a correct program is important, but learning to do it yourself is more important. Do talk to other students about solving the problems and about learning the languages, library, compilers, and program development tools. Do use the class mailing list. Do use the computer science help desk. But ... Do not look at other students' (current or previous) code for the projects. Do not spend your time searching for the project solutions on the Internet. Do not allow other students (current or future) to examine or copy your code for the projects. Do not buy and sell solutions to the projects. Do not denigrate the honest work of other students by valuing the "answer" to the project over the learning of the language. All programs are analyzed for a measure of similarity with other programs, current and past. Students whose programs are very similar to others will receive no credit. This policy is necessary to ensure that students take reasonable action to avoid and prevent plagiarism, and to ensure the proper recognition of independent effort. Without student cooperation, the importance of course grades for individuals diminishes, as does the incentive for learning by doing it yourself. Please discourage your peers from cheating. You have more influence than I do. If you have evidence of academic misconduct, you should bring it to the attention of your instructor, Dr. Shoaff, or Dean Kalajian.
You may work together with another student in the class on the programming projects. Groups can be no more than two people. Please do not work with the same person twice.
Include your name and e-mail address in all program files you submit for the projects. (Do not include your student number.) If you are working together, make sure your partner's name is also in the file. Here is an example header (using Java style comments):
/* * Author: student name, e-mail address * Author: partner name, e-mail address * Course: CSE 4250, Spring 2010 * Project: project tag, short project name */Your name or names on the code is your pledge that this work is solely your own effort. If you receive help from any source, you must include a note to that effect in the header. For example,
/* * Conversations with Don Knuth helped me figure out how to do IO. * The WWW site www.xxx.edu/yyy.html had a good explanation of the Knapsack problem. * The client/server example in van der Linden's book (figure 5.4) was the model * for my code. */
We will use electronic submissions. Projects are due at midnight. You may turn them in later at your own risk, but as soon as grading begins, no later assignments are accepted.
| Monday, 17 August 2009 | first lecture |
| Monday, 7 September 2009 | Labor Day (no classes) |
| Friday, 18 September 2009 | Proj #1 |
| Friday, 25 September 2009 | midterm exam #1 |
| Friday, 2 October 2009 | Friday's quiz over Hoare's retrospective |
| Monday, 12 October 2009 | Columbus Day/Fall Break (no classes) |
| Friday, 16 October 2009 | Proj #2 |
| Saturday, 17 October 2009 | Local programming contest |
| Friday, 24 October 2009 | last day to withdraw |
| Friday, 23 October 2009 canceled | midterm exam #2 esp. Ch 9,10,11 |
| Friday, 6 November 2009 | Proj #3 |
| Saturday, 7 November 2009 | ACM SER 2009 programming contest |
| Wednesday, 11 Nov 2009 | Vetrans' Day, no classes |
| 25-27 November 2009 | Thanksgiving Holiday, no classes |
| Wednesday, 2 December 2009 | last lecture |
| Friday, 4 December 2009 | Proj #4 |
| Wedensday, 9 December 2009 | final exam (1-3pm) |
Reading assignment. Sebesta 9e, Chapter 1: Preliminaries
Reading assignment. Sebesta 9e, Chapter 2: Evolution of the Major Programming Languages
Reading assignment. Sebesta 9e, Chapter 3: Describing Syntax and Semantics
Reading assignment. Sebesta 9e, Chapter 5: Names, Bindings, and Scopes; Chapter 7: Expressions and Assignments Statements; Chapter 8: Statement-Level Control Structures
Reading assignment. Sebesta 9e, Chapter 6: Data types
Reading assignment. Sebesta 9e, Chapter 9: Subprograms
Reading assignment. Sebesta 9e, Chapter 10: Implementing Subprograms
Reading assignment. Sebesta 9e, Chapter 11: Abstract Data types and Encapsulation Constructs
Reading assignment. Sebesta 9e, Chapter 12: Support for Object-Oriented Programming
Reading assignment.
Sebesta 9e, Chapter 15: Functional Programming Languages
Scott 2e, Chapter 10: Functional Languages
Reading assignment.
Sebesta 9e, Chapter 16: Logic Programming Languages
Scott 2e, Chapter 11: Logic Languages