CS 363 Comparative Programming Languages
Spring 2012
Prerequisite: Grade of C or better in CS 262
Catalog description: Key programming mechanisms
described independently of particular machines or languages including control,
binding, procedural abstraction and types.
Systematically surveys diverse high-level language capabilities.
Instructor:
Prof. Elizabeth White
Website:
Materials related to this class will be available on blackboard
Textbook: Programming Language Pragmatics,
M. Scott, 3rd edition, Morgan-Kauhmann, 2009.
This class will cover theoretical foundations of features
found in modern programming languages.
- Evolution
of programming languages
- Syntax
and semantics representation,
- Names, bindings and scope,
- Data and Control,
- Types and Type Systems,
- Procedural Abstraction,
- Concurrency,
- Language
approaches such as imperative, object-oriented, functional logic based and scripting programming languages.
Course Outcomes
At the end of this course, students should
- be able to read and use formal representations of programming language syntax.
- understand, in a language independent way, basic programming language components
such as variables, types, expressions, scope and control flow and see the choices made
for these components by common languages.
- have an understanding of runtime procedure/function control and data flow
implementation.
- have a basic understanding of the major programming language paradigms
(imperative, OO, functional, logic), including relevant application domains, strengths and
weaknesses.
- have an understanding of the fundamentals of concurrent programming and the language-level constructs that used in concurrent programming.
- gain basic programming competence in several different types of programming
languages, facilitating transition to other current (and future) languages encountered
during their professional career.
Grading
- Programming
Assignments (4 @ 10% each)
- This
class will require you to write programs in several different programming
languages.
- Homeworks (10%)
- Exams: Exam 1 (15%), Exam 2 (15%) and Final (20%)
Policies:
- Programming assignments are to be individual efforts, meaning no sharing of code or
discussion of problem solution allowed with anyone but me.
- Late policy:
- One day: 10% deduction
- Two days: 30% deduction
- Three days: 50% deduction
- More than 3 days - no credit
- You must turn in a working version of all programming assignments to pass the class (even if it receives no credit).
Honor Code
You are expected to abide by the honor code. Programming assignments and
exams are individual efforts. Information on the university honor code
can be found at:
http://jiju.gmu.edu/catalog/apolicies/honor.html
This semester I will probably be using similarity detection software to
assist me in finding honor code violations, should they occur.
Topics
- Intro and brief history of PL (0.5 weeks)
- Programming language syntax (1 week)
- Programming language constructs - Names, binding, scope, control flow, types (5 weeks)
- Functional programming (1.5 weeks)
- Logic Programming (1.5 weeks)
- Scripting Languages (1 week)
- Concurrency (2 weeks)