CSCI 305

Concepts of Programming Languages

3 Cr. (Hrs.:3 Lec.)

Students will study concepts of high-level programming languages. Topics include regular expressions, context free grammars, programming language syntax, semantics, language translation and how language constructs are implemented. Projects include a lexical analyzer and/or a parser. Students will also program in a functional and a logic language. Prerequisite: CSCI 232 (1st)

Course generally offered fall (1st) semester.


E1. Students have extensive programming experience in at least two different programming languages. (CSCI 135, CSCI 136, and CSCI 232)

E2. Students understand object oriented concepts including encapsulation, inheritance and polymorphism, and are able to write programs that use these concepts. (CSCI 232)

Course Outcomes:

R1.Students recognize regular languages, know situations where regular languages are useful, and are able to define regular languages using finite automaton (deterministic and non-deterministic), grammars and regular expressions. (CS: 6)

R2.Students recognize context free languages, know situations where context free languages are useful, and are able to define context free languages using push down automaton and grammars. (CS: 6)

R3.Students understand the syntax and semantics of programming languages and can formally describe portions of a programming language's syntax and semantics. (CS: 6)

R4.Students understand the process of language translation.

R5. Students understand common languages features, their advantages/disadvantages, and issues behind their implementation. (SE 2)

R6. Students understand different programming paradigms and know the strengths and weaknesses of functional and logic languages. (CS: 6; SE 2)

R7. Students are able to write programs in a variety of programming languages. (CS: 6; SE 2)

5-a-1 - Substantial coverage of algorithms and complexity, computer science theory, concepts of programming languages, and software development
5-a-4 - The study of computing-based systems at varying levels of abstraction

III-1-2-1 - Computing fundamentals, software design and construction, requirements analysis, security, verification, and validation