Course Description
Several modern programming languages and the paradigm -- procedural programming, object-oriented programming, functional programming, and logic programming -- that each strives to accommodate. Projects involve at least three languages.
Additional Requirements for Graduate Students:
Extra projects will be assigned to the graduate students.
Athena Title
PROG LANGUAGES
Prerequisite
CSCI 1302
Undergraduate Pre or Corequisite
CSCI 2720
Semester Course Offered
Not offered on a regular basis.
Grading System
A - F (Traditional)
Course Objectives
Students will understand the basic concepts, notations, and uses of various programming paradigms: procedural, object-oriented, functional, concurrent, and logic programming. They will have some understanding of how programming languages are defined -- in terms of syntax and semantics. They will have some ability to choose which paradigm to use for a given problem, and they will have some facility in writing and testing programs in at least three languages that use different paradigms.
Topical Outline
Language description: syntactic structure (lexical syntax, context-free grammars, abstract syntax trees, etc.) Language description: semantics: operational, denotational semantics, and axiomatic semantics; attribute grammars. Issues of type and scope: the role of types and scope; weak typing versus strong (syntatic) typing; basic types; arrays; records; abstract types; Procedures/functions: Parameter-passing methods; implementation of procedure/ function calls; frames; understanding procedure/function calls, including recursive procedures/functions. Functional programming Procedural programming in a structured fashion: variable declaration, assignment statement, conditional statement, loops (in terms of invariants and bound functions) Object-oriented programming: objects, classes, subclasses, inheritance, etc. Concurrent programming: parallelism in hardware; concurrency as interleaving; shared memory model; message-passing model; synchronization. Logic programming
Syllabus