Top/Public/Courses/CSCI 3675/syllabus

East Carolina University
Department of Computer Science

CSCI 3675


Curriculum
Courses
ABET
SACS

Data by course
Data by term
ETS MFT data
Current forms

Maintaining this site
Prepared by Karl Abrahamson
Date: July 2010

Catalog entry

Organization of Programming Languages (3)
P: CSCI 3200 or 3310. Applied course in programming language constructs. Emphasis on run-time behavior of programs. Provides appropriate background for advanced-level courses involving formal and theoretical aspects of programming languages and compilation process.

Class meeting frequency

Class meetings: 150 minutes per week.

Course summary

Programming languages are the notation in which programmers express their creations. It is said that natural language influences how people think. Whether or not that is true, it is certainly the case that programming languages strongly influence how programmers and software developers think.

This course explores different kinds of programming languages: their philosophies, components, structure, advantages and disadvantages. It also covers issues such as type checking, specification of syntax and semantics of languages, foundational issues and how programming languages are implemented.

The student should come away with an appreciation for different forms of programming languages, and should be able to explain when and why they are useful. The student should be able to apply different programming styles to solving problems, regardless of the language used. The student should have sufficient background to understand programming language documentation, and to learn new languages that follow particular styles.

Textbook

Concepts of Programming Languages: A Unified Approach, 2009, by Karl Abrahamson

Topics

  • Fundamental concepts of programming languages. Data, data types and data representation. Expressions and statements. Control. Modules and scope.
  • Syntax. Using BNF to specify syntax.
  • Language implementation issues. Compilers and interpreters. The run-time stack and recursion.
  • The functional approach. Declarative programming and programming without side effects. Higher order functions.
  • Types and polymorphism. Type checking and type inference.
  • Handling failure. Exception handling. Backtracking.
  • The logical approach. Variables, data structures and unification. Proofs as computation. Practical issues.
  • The object-oriented approach. Objects and classes. Inheritance and polymorphism. Virtual methods and run-time typing.
  • Issues in semantics. Elementary lambda calculus.

Course Outcomes

  • The student will gain an appreciation for different kinds of programming languages and be able to explain when and why each kind is useful.
  • The student will be able to apply different programming styles to solving problems, regardless of the language used.
  • The student will have sufficient background to understand programming language documentation, and to learn new languages that follow particular styles.

Grading

Grading is based on six biweekly quizzes, a comprehensive final examination and approximately seven programming assignments. The quizzes will count a total of 36%, the final exam 26% and the programming assignments 38%.