CS 236 - Programming Languages and Translators- Course Syllabus
Contact Information
Instructor: Michael G. Hilgers
Web Page: http://www.umr.edu/~hilgers
Email: hilgers@umr.edu
Phone: 341-4853 (office)
Office: Computer Science Bldg. 318
Office Hrs: Schedule
Class Time: Section A: Monday, Wednesday, Friday 11:30 AM - 12:20 PM
Room: MCNT 212
Course Objectives
This course attempts to answer several basic questions:
what is a programming language, how do they work, and why is one language
better than another? In answering these questions, it is hoped that
the student will:
-
Gain insight into the underlying principles and concepts of programming
languages.
-
Gain an understanding of how some well known programming languages implement
these principles and concepts.
-
Gain an overview of programming language translation process.
-
Gain exposure to some important programming paradigms (imperative, object
oriented, functional, and logic).
-
Gain proficiency in designing, implementing and testing of computer systems
(in particular, language translation systems in C++).
Will there be programming assignments?
Oh yes. . . One of the major activities in
the class will be the construction of a translation system using C++.
Over the course of the semester we will define a simple language
using EBNF grammar rules. This semester we will create our own version
of MatLab. By imitating it's console operations you will learn how
to implement scanning and parsing theory in a commerical setting.
We will develop and test about 10 programs implementing a recursive descent
parser with scanner. You will be challenged. These programs
will be 60% of your grade in the class. The final 30% will come from
a web-based documentation system you will write to support your software.
There will be extra-credit available in the form of problems chosen from
our text.
Are you ready for the course?
The listed prerequisite is CS 253. This is strict.
We will use a variety of data structures including, but not limited to
linked lists, binary trees and hashing tables. We will discuss
the implementation of these concepts using C++ in class, but you should
already have some experience with these concepts.
What will we cover?
The required textbook is Programming Language Pragmatics
by Michael L. Scott. We will cover:
-
Chapter 1 - Introduction of programming languages and their translators.
-
Chapter 2 - Programming Language Syntax.
-
Chapter 3 - Names, Scopes, and Bindings.
-
Chapter 4 - Semantic Analysis.
-
Chapter 6 - Control Flow. (prehaps)
-
Chapter 7 - Data Types. (prehaps)
-
Other topics as time permits.
Course Requirements/Policies
-
Attendance is required unless prior arrangements have been made.
In general there are no make-up assignments. If you must miss an
assignment, make sure you have an extraordinary reason. With that
said, I will consider your excuse fairly if you believe it to be valid.
-
Other policies stated within University guidelines are to be adhered to
by the student.
-
You must work alone on all programming projects. Any cheating will be handled
with appropriate University action. A standard example of cheating
for this course is submitting a program with your name on it that was written
by another person. Getting caught in such an activity will result
in a variety of penalities including but not limited to lowering your final
letter grade for the course by one letter and/or submitting your name to
the student peer review board.
Grading
-
15% Homework Problems
-
25% Tests (2)
-
60% Programs: (11, best 10 kept. Last program will not be dropped.)
Scores
The grade you receive for the class will be at worst according to
the traditional 90-100 A, 80-89 B, and so on. If, at the end
of the semester, I believe that these grade lines should be adjusted downward
(never upward), I will do so. The criteria used to score the
programs will be discussed when the first program is assigned.
Course Materials
Text: PROGRAMMING LANGUAGE PRAGMATICS
Morgan Kaufmann
Michael L. Scott, 2000