layout table
 

Course Outline CS 436A

Spring 2007

Section A: M, W, F: 3:10 pm - 4:10 pm
Class Room: Science Annex 201
Office: Science Annex 128
Office Hours: M, W: 11:30 am - 12:30 pm
T, Th: 1:00 - 2:30; 4:15 - 5:45 pm
F: 11:30 am - 12:30 pm; 2:00 - 3:00 pm
And by appointment also
Phone: 386-481-2689
EMail: BethelmyD@cookman.edu
URL: www4.cookman.edu/faculty/bethelmy

Booklist

Text Author(s) Publisher ISBN
Programming Language Pragmatics (2nd Edition) Scott Morgan Kaufmann 978-0-12-633951-2

Required Hardware:

A computer.

Course Description:

Introduction to the theory of programming languages, formal languages and grammars, design and implementation of translators, interpreters, and compilers.

Prerequisite:

At least C's in CS 231 (Programming II) and CS 333 (Data Structures).

Course Objectives

A student who successfully completes this course will understand why there are so many programming languages and how to analyze a language and its associated development environment to determine if that language and its tools are the best choice for his/her programming tasks.  The student will also understand the theoretical foundations of programming languages and computability and will be prepared to pursue further studies in fields like automata and formal languages, computability and complexity, and compiler construction.

Assessment of Academic Achievement:

Homework Quizzes Exam I Exam II Term Project Final Exam
10% 5% 15% 15% 20% 35%
Some programming exercises will be given. Given at random 2/23/07
Written
4/11/07
Written

 

Pick a programming language that you do not already know and present a paper on its features on the last day of class, 4/20/07. Written AND comprehensive
on one of the days from 4/24 - 4/26
Note: Graduating seniors will only have Exam I, Exam II, and the term project. Exam II will count as the final and the percentages will be 32.5% for each exam.
Also, the project will have to be finished by 4/11/07.

Grading scale:

A: 90-100%, B: 80-89%, C: 70-79%, D: 60-69%, F: 0-59%

Things to note about this class

  • You should be prepared to spend a lot of time outside of class on this material.  It is a 400-level course.
  • You should make a supreme effort to study the textbook very carefully with the aim of understanding the material so that you can retrieve what you have learnt without the aid of the books. (Ideally, you should be reading ahead of me.) Try as many of the self-test exercises at the end of each section in the text.
  • You should be able to design algorithms and implement them, on your own, in at least one higher-level language.  Some of the homework will require you to write programs.
  • You should have access to a computer on which you can install programs.  You will be required to familiarize yourself with a programming language environment that you have NOT seen before.
  • You should be prepared to deal with mathematical abstraction as some of the theoretical parts of this subject are heavily mathematical by nature.
  • You should be prepared for closed-book exams that require you to have memorized certain details covered in the course.
  • You should attempt every question given for homework and see me as soon as you can't do any of them.
  • You cannot pass this class by attendance only but missing classes will cause you to do poorly on my exams/quizzes.
  • You may be required to write parts of a program on in-class exams. None of the exams is open-book.
  • If you miss a class, you need to find out what assignments and reading have been given BEFORE coming to the next class.
  • If you miss a quiz, there is no makeup.
  • If you miss an exam, you will need a documented excuse from a legally valid source (doctor, lawyer, coroner, etc.) for me to consider giving you a makeup.
  • You cannot survive in this class without studying the text.  (I realize that books are expensive and that you may not have the finances right away but there are other things that can be done to ease the burden. See me for suggestions.)
  • I am here to help and I prefer that you hunt me down for such help. I know how I think better than anyone else.
  • You will need to check your Cookman email daily as I will send information to you regularly via your Cookman email accounts.
    Please check daily, especially before class.

Topics that I hope to cover

The topics may not be covered in the order given and it is possible that only parts of some chapters will be covered. You will need to stay informed of which parts of which chapters are being covered.  Some of the material is only on the CD that accompanies the text.

  • Introduction (Chapter 1)
  • Programming Language Syntax (Chapter 2)
  • Automata Theory and Formal Grammars (CD and notes)
  • Names, Scopes, and Bindings (Chapter 3)
  • Semantic Analysis (Chapter 4)
  •  Target Machine Architecture (Chapter 5)
  • Control Flow (Chapter 6)
  • Data Types (Chapter 7)
  • Subroutines and Control Abstractions (Chapter 8)
  • Data Abstraction and Object Orientation (Chapter 9)
  • Functional Languages (Chapter 10)
  • Concurrency (Chapter 12)
  • Scripting Languages (Chapter 13)