Programming Languages

CSCI 355, Section 01
Fall Semester 2017 Revised

 

Instructor

John I. Moore, Jr. Phone:  843-953-7883
Office: Thompson Hall 209        E-mail: john.moore@citadel.edu

 

Course Description

Programming language concepts and constructs with emphasis on the run-time behavior of programs. Topics include imperative, functional, and logic programming paradigms; language syntax and semantics; and global properties of programming languages including scope, parameter passing, storage allocation, and the binding time of constituents.

Prerequisite: CSCI 223; prerequisite or corequisite: CSCI 305.

 

Learning Outcomes

Upon successful completion of this course, a student will be able to

 

Class Schedule

Monday-Wednesday-Friday, 11:00-11:50 a.m., Thompson Hall 216.

 

Textbooks

  1. Michael L. Scott, Programming Language Pragmatics (Fourth Edition), Morgan Kaufmann, 2016, ISBN: 978-0124104099.
     
  2. Graham Hutton, Programming in Haskell (Second Edition) by Cambridge University Press, 2016, ISBN: 978-1316626221.

Also:  Course Notes and Handouts

 

Grading

The final grade for the course is based on 7 grades as follows:

 

Miscellaneous Grading Policies

  1. This course will contain a number of graded programming assignments. Except for explicitly assigned joint projects, students are required to work individually on all graded work done outside of class. Assistance from anyone other than the instructor is not permitted.
     
  2. Each programming assignment is due one week after it is assigned unless noted otherwise by the instructor. A late program, for whatever reason, will have its grade lowered by one letter, and programs more than one week late might not be accepted, based on the discretion of the instructor. Program grades will be based on the following factors: correctness of programming logic, overall design and structure, style, and enhancements.

    Please note: Correctness of programming logic is the most important factor. It is usually better to turn a correct program in late than to turn it in on time with logic errors. Also, turning in a program that does not compile or run will result in a grade of zero for that project.
     
  3. Homework will be assigned, but it will not be collected or graded. Unless otherwise noted, daily quizzes will come from the material covered in the previous day’s class, often straight from the homework assignments.
     
  4. Class attendance and participation can influence borderline grades.
     
  5. A total of nine absences will result in a course grade of F. With respect to this policy, three lates count as an absence. In addition, if you are late by 15 minutes or more, you will be considered absent.
     
  6. Incomplete grades are given only in unusual circumstances. Consult the college catalog for policy on incomplete work.

 

Office Hours

Monday 9:30-11:00 a.m., 2:30-3:30 p.m.
Wednesday  9:30-11:00 a.m., 2:30-3:30 p.m.
Thursday  4:30-5:30 p.m.
Friday  9:30-11:00 a.m.

Other times by appointment

 

Important Dates

Oct. 4 Test 1 (Chapters 1-3 plus Bash)
Oct. 18 Leadership Day (no class)
Nov. 1 Last day to withdraw with a grade of “W”
Nov. 8 Test 2 (Chapters 6-7 plus Haskell)
Nov. 20-24 Fall Break (Take book home to study during break!)
Dec. 1 Test 3 (Chapters 8-9, 13-14)
Dec. 13 (Wednesday) Final Exam, 8:00-11:00 p.m.

 

Expectations

  1. Do not miss an assigned test without a valid excuse! Missing an assigned test without a valid excuse will result in a grade of zero for that test. The instructor gets to determine whether or not an excuse is valid. In particular, guard duty is not an acceptable excuse for missing an assigned test. When possible, students should notify the instructor in advance if they will be unable to take an assigned test. All make-up tests will be given outside of normal class time. Once a test has been given in class, any subsequent make-up tests may differ significantly.
     
  2. Show up for class on time and prepared. That means that you have read the appropriate sections from the book plus any handouts, and you have worked all assigned homework. If a test has been assigned, you should be prepared to take the test. If you were late to class or absent from the previous class meeting, you are responsible for getting class notes and assignments from another student in the class or from the instructor.
     
  3. If you are late to class, it is possible that you have already been marked absent by the time you arrive. It is your responsibility to notify the instructor after class that you were late rather than absent.
     
  4. Take care of any personal needs outside of class time. Except for emergencies, you should not need to go to the bathroom, get a drink of water, etc. If you need to leave the room at any time while class is in session, you should ask for permission.
     
  5. There should be no personal conversations or moving around during class without explicit permission. These actions are disturbing to other students and to the instructor. Be courteous and respect the rights of others.
     
  6. Cell phones must be kept in book bags and programmed in a silent or vibrate setting during class.
     
  7. You should respect the property of your college. No eating, drinking (other than water), smoking, dipping, chewing tobacco, etc. in the classrooms. Also, no writing or carving on the desks, chairs, podium, etc. Any willful vandalism or destruction of Citadel property will be handled appropriately.

 

Daily Schedule

Dates Topics Covered
Aug. 23 Introduction (Chapter 1)
Aug. 25 Introduction (Chapter 1)
   
Aug. 28 Specifying Syntax (Section 2.1)
Aug. 30 Context-Free Grammars (handout)
Sep. 1 Names, Scopes, and Bindings (Chapter 3)
   
Sep. 4 Names, Scopes, and Bindings (Chapter 3)
Sep. 6 Names, Scopes, and Bindings (Chapter 3)
   
Sep. 8-13 Hurrication
   
Sep. 15 Overview of Bash
   
Sep. 18 Overview of Bash
Sep. 20 Overview of Bash
Sep. 22 Overview of Bash
   
Sep. 25 Bash Shell Scripts
Sep. 27 Bash Shell Scripts
Sep. 27 Bash Shell Scripts
   
Oct. 2 Control Flow (Chapter 6)
Oct. 4 Test 1 (Chapters 1-3 plus Bash)
Oct. 6 Control Flow (Chapter 6)
   
Oct. 9 Control Flow (Chapter 6)
Oct. 11 Type Systems (Chapter 7)
Oct. 13 Type Systems (Chapter 7)
   
Oct. 16 Overview of the Haskell Programming Language
Oct. 18 Leadership Day (no class)
Oct. 20 Overview of the Haskell Programming Language
   
Oct. 23 Lists and Tuples in Haskell
Oct. 25 Lists and Tuples in Haskell
Oct. 27 Statements and Functions in Haskell
   
Oct. 30 Statements and Functions in Haskell
Nov. 1 Statements and Functions in Haskell
Nov. 3 Composite Types (Chapter 8)
   
Nov. 6 Composite Types (Chapter 8)
Nov. 8 Test 2 (Chapters 6-7 plus Haskell)
Nov. 9 (Make-up Day) (11:00-11:50) Composite Types (Chapter 8)
Nov. 10 Subroutines and Control Abstraction (Chapter 9)
   
Nov. 13 Subroutines and Control Abstraction (Chapter 9)
Nov. 15 Concurrency (Chapter 13)
Nov. 17 Concurrency (Chapter 13)
   
Nov. 20-24 Fall Break (Take book home to study during break!)
   
Nov. 27 Concurrency (Chapter 13)
Nov. 29 Scripting Languages (Chapter 14)
Nov. 30 (Make-up Day) (11:00-11:50) Scripting Languages (Chapter 14)
Dec. 1 Test 3 (Chapters 8-9, 13-14)
   
Dec. 4 Chapter 10 (Data Abstraction and Object Orientation (Chapter 10)
Dec. 6 Exam Review/Course Evaluations
   
Dec. 13 (Wednesday) Final Exam, 8:00-11:00 a.m.