UGA Bulletin Logo

Programming Languages


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