Syllabus Sections
Publish Date
01/21/2021 15:10:03
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.