CSE4250: Programming Language Concepts (Spring 2022)

General info

Instructor

Ryan Stansifer

Office hours

Check my WWW page for up to date information, you are always welcome to send me e-mail.

Lectures

Class meets from 2pm to 2:5pm Monday, Wednesday, and Fridays in Crawford, room 402. The zoom meetings are found on the FIT Canvas LMS.

Catalog Description

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.

Overview

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. More broadly, it is the study of human to computer communication.

Why study programming languages?

Above all, the class helps alleviate some of the difficulty in having to write in some new programming language.

Why is the subject interesting? It is interesting as part of the quest for natural and precise communication.

Prerequisites

Students are expected to know how to program in an imperative language like Java, C 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.

Textbook

The textbook for the class is by Sebesta. The value of a textbook is that it provides more depth than can be covered in class: other topics, more examples, ideas to explore and so on.

Sebesta Robert W. Sebesta.
Concepts of Programming Languages, eleventh edition.
Boston, Massachusetts: Addison-Wesley, 2016.
ISBN13: 978-0-13-394302-3
book cover

You may wish to read other textbooks that cover roughly the same material for a different perspective: Scott, Louden and Lambert, Tucker and Noonan, Mitchell, Stansifer.

Scott Michael Scott.
Programming Languages, fourth edition.
Morgan Kaufmann, San Francisco, California, 2016.
ISBN-13: 978-0124104099
book cover
Mitchell Mitchell, John Clifford
Concepts of Programming Languages.
Cambridge, England: Cambridge University Press, 2003.
ISBN: 0-521-78098-5
book cover
Stansifer Ryan Stansifer.
The study of programming languages.
Prentice Hall, 1995. ISBN: 0-13-726936-6
book cover

Three kinds of supplementary course material are available on the Internet:

Grading and assignments

There will be one final exam (worth more than a midterm) In addition, we anticipate that there will be several projects. The grade for the course will be based 70 percent on the exams, 30 percent on the projects.

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 read 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 course work (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.

Projects

There will be several projects in this course. 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 computer science CS 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. All programs are analyzed and a measure of similarity with other programs from many sources is calculated. Projects whose programs are very similar to other programs 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.

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 2022
 * Project: project tag, short project name
 * Implementation: compiler version
 */
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. Assignments turned in early might get some feedback which may improve the score. Only one person of the group should turn in the assignment.

Monday, 10 Jan 2022First lecture
Monday, 17 Jan 2022Martin Luther King Jr. Day (No classes)
Friday, 4 Feb 2022Project #1: FITstone Virtual Machine
Friday, 11 Feb 2022Midterm Exam: Syntax & Semantics
Friday, 18 March 2022Project #2: Egyptian Hieroglyphics
Friday, 25 March 2022Midterm Exam: Polymorphism & Blocks
Friday, 22 Apr 2022Project #3: Decoding Text
Thursday, 5 May 2022Final Exam, 1-3pm: Functional & Logic

Academic Support

Please take advantage of the support services provided by the CS help desk and the office of Academic Support.

Important Notices

Cheating

Do not cheat on the exams; do not ask for or give code to others; do not buy or sell the solutions to the projects. Do not make solutions publicly available. The penalty for academic misconduct is a grade of 'F' for the course. Discussions with your classmates, with teaching assistants, at the help desk, or academic support center are encouraged. Know how to do exercises, know how to ask for help, and know how to help each other. 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, or the department head.

Please note, that copies of some work (homework, projects, exams, etc) for classes may be kept on file. This is done for two purposes. For review by ABET, for the purposes of maintaining the accreditation of the CS program, and to detect plagiarism.

In accordance “Florida Tech Safe: Return to Learn” procedures, instructors will enforce Florida's mandatory face covering policy in all classrooms and teaching labs. All students MUST wear appropriate face coverings that cover their mouth and nose during all face-to-face course meetings. Students who fail to comply with this policy WILL BE REQUIRED to leave the classroom immediately. Students unable to comply may contact the Dean of Students Rodney Bowers for further options.

Title IX of the Educational Amendments Act of 1972 is the federal law prohibiting discrimination based on sex under any education program and/or activity operated by an institution receiving and/or benefiting from federal financial assistance. Behaviors that can be considered “sexual discrimination” include sexual assault, sexual harassment, stalking, relationship abuse (dating violence and domestic violence), sexual misconduct, and gender discrimination. You are encouraged to report these behaviors.

Reporting

Florida Tech can better support students in trouble if we know about what is happening. Reporting also helps us to identify patterns that might arise — for example, if more than one complainant reports having been assaulted or harassed by the same individual. Florida Tech is committed to providing a safe and positive learning experience. To report a violation of sexual misconduct or gender discrimination, please contact Security at 321-674-8111. * Please note that as your professor, I am required to report any incidences to Security or to the Title IX Coordinator (321-674-8885, Office: Quad 401, Miller Building — Room 125, Email: fbaarman@fit.edu). Confidential support for students is available by contacting the Student Counseling Center at 321-674-8050.

Reading Assignments

Week 1
Introduction, history.

Reading assignment. Sebesta 11e, Chapter 1: Preliminaries

Week 2
History of programming languages. Study of language.

Reading assignment. Sebesta 11e, Chapter 2: Evolution of the Major Programming Languages

Week 3
Formalizing syntax: Regular expressions, BNF.

Reading assignment. Scott 4e, Section 2.1: Programming Language Syntax: Specifying Syntax. Reading assignment. Scott 4e, Chapter 4: Semantic Analysis. Reading assignment. Sebesta 11e, Chapter 3: Describing Syntax and Semantics

Week 4
Semantics.
Week 5
Bindings, environments, pointer

Reading assignment. Sebesta 11e, Chapter 5: Names, Bindings, and Scopes; Chapter 7: Expressions and Assignments Statements; Chapter 8: Statement-Level Control Structures

Week 6
Data types and polymorphism

Reading assignment. Sebesta 11e, Chapter 6: Data types

Week 7
Blocks, scope, subprograms

Reading assignment. Sebesta 11e, Chapter 9: Subprograms

Week 8
Implementing block structured languages

Reading assignment. Sebesta 11e, Chapter 10: Implementing Subprograms

Week 9
Abstract data types and modules

Reading assignment. Sebesta 11e, Chapter 11: Abstract Data types and Encapsulation Constructs

Week 10
Object-Oriented programming

Reading assignment. Sebesta 11e, Chapter 12: Support for Object-Oriented Programming

Week 11
Functional programming

Reading assignment. Sebesta 11e, Chapter 15: Functional Programming Languages

Week 12
Functional programming language: Haskell
Week 13
Functional programming language: Haskell

Week 14
Logic programming: PROLOG

Reading assignment. Sebesta 11e, Chapter 16: Logic Programming Languages
Scott 2e, Chapter 11: Logic Languages

Week 15
PROLOG