CS 380: Programming Languages -- Fall 2017

Professor: Dr. Alan Garvey

Section 01: MWF 11:30am-12:20pm

Office Hours

Contact Information:

Textbooks

Writing

Programming Languages is a writing enhanced course and counts toward your LSP writing enhanced requirement. That means that writing will be an important part of the course and that learning through writing will be emphasized. See the accompanying handout for a more detailed description of what it means for CS 380 to be a Writing Enhanced course.

Catalog Copy

Formal language concepts, and structures of algorithmic languages. A study of the variety of programming languages and techniques used to reason about programming.

This course counts toward the required 63 LAS hours and is writing enhanced.

Prerequisites

Successful completion of CS 310.

Course Objectives

  1. Learn the major principles and concepts underlying all programming languages.
  2. Become familiar with the major programming language paradigms.
  3. Explore the programming language principles and paradigms using the Clojure language.
  4. Use writing to facilitate and extend your learning about programming languages.

Class Attendance

Class attendance is your responsibility. I understand that you will occasionally have to miss class. However, whether you are in class or not you will be responsible for all deadlines and all materials taught or assigned. Graded activities such as tests, quizzes, labs, in-class projects, etc. . . may not be made up. Exceptions to this will be at my discretion and must be arranged with me before the missed class. Be aware that in class I will cover significant amounts of material that is not covered by the textbooks.

Grading

Your final grade will be determined using the following scale:

Honesty

Anyone submitting work to be graded which, in my estimation and beyond reasonable doubt, is not his or her work alone will receive an F. No group work is allowed unless I explicitly indicate that you can work in groups. When you do hand in group work, you must always indicate that it is group work and who was involved in it. You are welcome to discuss assignments with anyone, but all work you hand in must be your own. For example, you may use the WWW to find information about a topic or to find programs in the languages that we study, but any written assignment or program that you hand in MUST BE YOUR OWN WORK. Corrolary: If you provide work you produce to others, you are aiding and abetting their dishonesty and thus being dishonest yourself. Providing your work to others or giving answers to others is not acceptable.

ADA Statement

If you have a disability for which you are or may be requesting an accommodation, you are encouraged to contact both your instructor and the Disability Services office (x4478) as soon as possible.

Reporting Statement

As an instructor, I have a mandatory reporting responsibility under Title IX federal statutes. I am required to share information with Truman administration officials regarding sexual misconduct or information about a crime that may have occurred on Truman's campus. Students may speak to someone confidentially by contacting University Counseling Services at 660-785-4014 during business hours, or 660-665-5621 for after-hours crisis counseling.

Order of Topics to be Covered

  1. Introduction (Ch 1)
  2. Syntax and Semantics (Ch 2 + a bit of Ch 4)
  3. Introduction to Clojure
  4. Names, Scopes and Binding (Ch 3)
  5. Expressions and Control Structures (Ch 6)
  6. Data Types (Ch 7-8)
  7. More Clojure
  8. Subroutines (Ch 9)
  9. More Clojure
  10. Object-Oriented Programming (Ch 10)
  11. Functional Programming (Ch 11)
  12. Logic Programming (Ch 12)
  13. Perhaps yet more Clojure
  14. Brief presentation of research papers (during scheduled Final time)