Syllabus
Programming Languages

Programming Languages

COSC-3301

Credit Spring 2021
01/19/2021 - 05/16/2021

Course Information

Section 001
Distance Learning
T 18:00 - 20:45
DLS DIL
Dana Marshall

Section 001
Laboratory
T 20:45 - 21:45
DLS DIL
Dana Marshall

Office Hours

  • M T W Th
    c. 5:00 - c. 5:30
    Online
    Send an email to arrange a time.

Course Requirements

 

  • Week 1:
    • Lecture: Introduction to course
    • Assignment: Hello World
  • Week 2:
    • Lecture: Grammars, Recursive Functions
    • Assignment: Recursive Function
  • Week 3:
    • Lecture: Grammars, Mathematical Series
    • Assignment: Mathematical Series
    • Quiz: Grammars #1
  • Week 4:
    • Lecture: Grammar, Functions as Values, Bisection
    • Assignment: Bisection Method
    • Quiz: Grammars #2
  • Week 5:
    • Lecture: Axiomatic Semantics, Lists
    • Assignment: List Manipulation
    • Quiz: Grammars #3
  • Week 6:
    • Lecture: Bindings and Scope, Quicksort
    • Assignment: Quicksort
    • Quiz: Axiomatic Semantics
  • Week 7:
    • Lecture: Types, Pointers, Trees
    • Assignment: Binary Tree Creation
    • Quiz: Scope
  • Week 8:
    • Lecture: Expressions, Trees
    • Assignment: Binary Tree Sort
    • Quiz: Types
  • Week 9:
    • Lecture: Control Structures
    • Assignment: Data Abstraction
    • Quiz: Expressions
  • Week 10:
    • Lecture:  Parameters, Fractals
    • Assignment: Fractals
    • Quiz: Control Structures
  • Week 11:
    • Lecture:  Macros, Generics
    • Assignment: Hello World
    • Quiz: Parameters
  • Week 12:
    • Lecture:  Data Abstraction, Recursion
    • Assignment: Basel Series
    • Quiz: Macros
  • Week 13:
    • Lecture: Object Oriented Programming, Lists
    • Assignment: List Processing
    • Quiz: PL Glossary
  • Week 14:
    • Lecture: Parallel Processing
    • Assignment: Fibonacci
    • Quiz: OOP
  • Week 15:
    • Lecture: Exceptions
    • Quiz: Parallel Processing
    • Assignment: Binary Search Tree
  • Week 16:
    • Final Assignments Due at Start of Class
    • Class Work: Present Final Work to class

Readings

The text is ‘Concepts of Programming Languages’, by Robert W. Sebesta. Additional resources are web sites https://docs.racket-lang.org/guide/ and http://www.gprolog.org/

Course Subjects

 

  • Week 1:
    • Lecture: Introduction to course
    • Assignment: Hello World
  • Week 2:
    • Lecture: Grammars, Recursive Functions
    • Assignment: Recursive Function
  • Week 3:
    • Lecture: Grammars, Mathematical Series
    • Assignment: Mathematical Series
    • Quiz: Grammars #1
  • Week 4:
    • Lecture: Grammar, Functions as Values, Bisection
    • Assignment: Bisection Method
    • Quiz: Grammars #2
  • Week 5:
    • Lecture: Axiomatic Semantics, Lists
    • Assignment: List Manipulation
    • Quiz: Grammars #3
  • Week 6:
    • Lecture: Bindings and Scope, Quicksort
    • Assignment: Quicksort
    • Quiz: Axiomatic Semantics
  • Week 7:
    • Lecture: Types, Pointers, Trees
    • Assignment: Binary Tree Creation
    • Quiz: Scope
  • Week 8:
    • Lecture: Expressions, Trees
    • Assignment: Binary Tree Sort
    • Quiz: Types
  • Week 9:
    • Lecture: Control Structures
    • Assignment: Data Abstraction
    • Quiz: Expressions
  • Week 10:
    • Lecture:  Parameters, Fractals
    • Assignment: Fractals
    • Quiz: Control Structures
  • Week 11:
    • Lecture:  Macros, Generics
    • Assignment: Hello World
    • Quiz: Parameters
  • Week 12:
    • Lecture:  Data Abstraction, Recursion
    • Assignment: Basel Series
    • Quiz: Macros
  • Week 13:
    • Lecture: Object Oriented Programming, Lists
    • Assignment: List Processing
    • Quiz: PL Glossary
  • Week 14:
    • Lecture: Parallel Processing
    • Assignment: Fibonacci
    • Quiz: OOP
  • Week 15:
    • Lecture: Exceptions
    • Quiz: Parallel Processing
    • Assignment: Binary Search Tree
  • Week 16:
    • Final Assignments Due at Start of Class
    • Class Work: Present Final Work to class

Student Learning Outcomes/Learning Objectives

An introduction to the design and structure and features of programing languages.  The course will focus on the fundamental concepts, building blocks, and differences of languages, and the effects they have on coding and implementation.  The course will also cover features of different language paradigms, including imperative, logic, object-oriented, and functional programming.  The goals are that students will gain fluency in different logical and mathematical systems, learn different programming models and paradigms, and be able to quickly achieve productive fluency in any new programming language.