CSCI 308 Programming Language Design
The Challenges
Progress
Introduction
Release: Aug 24 Due: Aug 28 at 9:00 AM
Paradigm
Release: Aug 24 Due: Aug 28 at 9:00 AM
Compilation
Release: Aug 24 Due: Aug 28 at 9:00 AM
Data Type
Release: Aug 24 Due: Aug 31 at 9:00 AM
Type Coercion
Release: Aug 24 Due: Sep 2 at 9:00 AM
Type Constructor 1
Release: Aug 24 Due: Sep 4 at 9:00 AM
Type Constructor 2
Release: Aug 24 Due: Sep 7 at 9:00 AM
Typing
Release: Aug 24 Due: Sep 9 at 9:00 AM
Method Binding
Release: Aug 31 Due: Sep 11 at 9:00 AM
Polymorphism
Release: Aug 31 Due: Sep 14 at 9:00 AM
Multiple Inheritance
Release: Aug 31 Due: Sep 16 at 9:00 AM
Reflection
Release: Aug 31 Due: Sep 18 at 9:00 AM
Type Checking 1
Release: Sep 7 Due: Sep 21 at 9:00 AM
Type Checking 2
Release: Sep 7 Due: Sep 23 at 9:00 AM
Type Checking 3
Release: Sep 7 Due: Sep 25 at 9:00 AM
Scope
Release: Sep 14 Due: Sep 28 at 9:00 AM
Prolog 1
Release: Sep 14 Due: Sep 30 at 9:00 AM
Prolog 2
Release: Sep 14 Due: Oct 2 at 9:00 AM
Java Memory
Release: Sep 21 Due: Oct 5 at 9:00 AM
C++ Memory
Release: Sep 21 Due: Oct 7 at 9:00 AM
Allocation and Deallocation
Release: Sep 21 Due: Oct 9 at 9:00 AM
Initial Value
Release: Sep 21 Due: Oct 9 at 9:00 AM
Memory Hazard
Release: Sep 21 Due: Oct 14 at 9:00 AM
Copy Constructor
Release: Sep 21 Due: Oct 16 at 9:00 AM
BNF & Grammar
Release: Oct 5 Due: Oct 19 at 9:00 AM
Parse Tree
Release: Oct 5 Due: Oct 21 at 9:00 AM
Precedence and Associativity
Release: Oct 5 Due: Oct 23 at 9:00 AM
Dangling Else
Release: Oct 5 Due: Oct 26 at 9:00 AM
SQL
Release: Oct 12 Due: Oct 28 at 9:00 AM
Pattern Matching
Release: Oct 19 Due: Oct 30 at 9:00 AM
Algebraic Data Type and Functional Type
Release: Oct 19 Due: Nov 2 at 9:00 AM
Anonymous & Currying
Release: Oct 19 Due: Nov 4 at 9:00 AM
Higher Order
Filter Map Fold
Release: Oct 19 Due: Nov 6 at 9:00 AM
List Comprehensions
Release: Oct 19 Due: Nov 9 at 9:00 AM
Infinite List
Release: Oct 19 Due: Nov 11 at 9:00 AM
Procedural Terminology
Release: Oct 26 Due: Nov 13 at 9:00 AM
Strict Evaluation
Release: Oct 26 Due: Nov 16 at 9:00 AM
Non-Strict Evaluation & Short Circuit
Release: Oct 26 Due: Nov 18 at 9:00 AM
Regular Expression
Release: Nov 2 Due: Nov 30 at 9:00 AM
Using Regexp
Release: Nov 2 Due: Dec 2 at 9:00 AM
Grep Regexp
Release: Nov 2 Due: Dec 4 at 9:00 AM
Coding
Release: Aug 24
Type Coercion
Release: Aug 24
Formal Type
Release: Aug 24
Type Constructor in Java
Release: Aug 24
Type Constructor in Pseudocode
Release: Aug 24
More Formal Type
Release: Aug 24
More Type Constructor in Java
Release: Aug 24
Typing
Release: Aug 24
Method Binding
Release: Aug 31
Typing vs Binding
Release: Aug 31
Polymorphism
Release: Aug 31
Multiple Inheritance
Release: Aug 31
Reflection
Release: Aug 31
Type Checking
Inference Equivalence
Release: Sep 7
Type Checking
Coercion
Release: Sep 7
Scope
Release: Sep 14
Prolog Intro
Release: Sep 14
Unification
Release: Sep 14
Memory Allocation and Deallocation
Release: Sep 21
Initial Value
Release: Sep 21
Memory Hazard
Release: Sep 21
Copy Constructor
Release: Sep 21
Parse Tree
Release: Oct 5
Precedence and Associativity
Write BNF rules for exp
Release: Oct 5
Dangling Else
Release: Oct 5
SQL
Release: Oct 12
Pattern Matching
Release: Oct 19
Haskell Type
Release: Oct 19
Haskell Formal Type
Release: Oct 19
Anonymous & Currying
Release: Oct 19
Higher Order
Release: Oct 19
Haskell Features
Release: Oct 19
List Comprehensions
Release: Oct 19
Infinite Lists
Release: Oct 19
Operator Fix
Release: Oct 26
Pass by Value/Reference
Release: Oct 26
Scope vs Passing
Release: Oct 26
Evaluation Order
Strict vs Non-Strict
Release: Oct 26
Evaluation Order vs Method Binding
Release: Oct 26
Short Circuit
Release: Oct 26
Short Circuit vs Name/Need
Release: Oct 26
Short Circuit vs Scope
Release: Oct 26
Regular Expressions
Release: Nov 2
Using Regular Expressions
Release: Nov 2
Grep for Regular Expressions
Release: Nov 2
Method Binding
Due: Dec 14 at 6:30 PM
Parameter Passing Name/Need
Due: Dec 14 at 6:30 PM
Parameter Passing Value/Reference
Due: Dec 14 at 6:30 PM
Parse Tree
Due: Dec 14 at 6:30 PM
Scope
Due: Dec 14 at 6:30 PM
Short Circuit
Due: Dec 14 at 6:30 PM
Strict vs Non-Strict Evaluation Order
Due: Dec 14 at 6:30 PM
Typing
Due: Dec 14 at 6:30 PM
Typing vs Method Binding
Due: Dec 14 at 6:30 PM
Anonymous Function
Due: Dec 14 at 6:30 PM
Copy Constructor
Due: Dec 14 at 6:30 PM
Dangling Else
Due: Dec 14 at 6:30 PM
Functional Formal Type
Due: Dec 14 at 6:30 PM
Higher Order
Due: Dec 14 at 6:30 PM
Imperative Formal Type
Due: Dec 14 at 6:30 PM
Infinite List
Due: Dec 14 at 6:30 PM
Memory Hazard
Due: Dec 14 at 6:30 PM
Multiple Inheritance
Due: Dec 14 at 6:30 PM
Polymorphism
Due: Dec 14 at 6:30 PM
Precedence & Associativity
Due: Dec 14 at 6:30 PM
Prolog Unification
Due: Dec 14 at 6:30 PM
Reflection
Due: Dec 14 at 6:30 PM
Regular Expression in Python
Due: Dec 14 at 6:30 PM
Type Checking
Due: Dec 14 at 6:30 PM
Type Constructor
Due: Dec 14 at 6:30 PM
Determine many choices
Due: Dec 14 at 6:30 PM
Identify the Concept and Choices
Due: Dec 14 at 6:30 PM
Parse Tree
Due: Dec 14 at 6:30 PM
Haskell Formal Type
Due: Dec 14 at 6:30 PM
Haskell Infinite List
Due: Dec 14 at 6:30 PM
Imperative Formal Type
Due: Dec 14 at 6:30 PM
Memory Hazard
Due: Dec 14 at 6:30 PM
Precedence & Associativity
Due: Dec 14 at 6:30 PM
Regular Expression in Python
Due: Dec 14 at 6:30 PM
Type Checking
Due: Dec 14 at 6:30 PM
Type Constructor
Due: Dec 14 at 6:30 PM
Bash A (Solo)
Release: Aug 27 Due: Sep 2 at 11:59 PM
Bash B (Team)
Release: Sep 3 Due: Sep 9 at 11:59 PM
Bash C (Team)
Release: Sep 10 Due: Sep 16 at 11:59 PM
C++ A (Solo)
Release: Sep 17 Due: Sep 23 at 11:59 PM
C++ B (Team)
Release: Sep 24 Due: Sep 30 at 11:59 PM
C++ C (Team)
Release: Oct 1 Due: Oct 7 at 11:59 PM
Prolog A (Solo)
Release: Oct 8 Due: Oct 14 at 11:59 PM
Prolog B (Team)
Release: Oct 15 Due: Oct 21 at 11:59 PM
Prolog C (Team)
Release: Oct 22 Due: Oct 28 at 11:59 PM
SQL (Solo)
Release: Oct 29 Due: Nov 4 at 11:59 PM
Haskell A (Solo)
Release: Nov 5 Due: Nov 11 at 11:59 PM
Haskell B (Team)
Release: Nov 12 Due: Nov 18 at 11:59 PM
Haskell C (Team)
Release: Nov 19 Due: Dec 2 at 11:59 PM
RegEx (Solo)
Release: Dec 3 Due: Dec 8 at 11:59 PM
Week 1
Progress Reflection
Release: Aug 28 Due: Aug 31 at 9:00 AM
Week 2
Progress Reflection
Release: Sep 4 Due: Sep 7 at 9:00 AM
Week 3
Progress Reflection
Release: Sep 11 Due: Sep 14 at 9:00 AM
Week 4
Progress Reflection
Release: Sep 18 Due: Sep 21 at 9:00 AM
Week 5
Progress Reflection
Release: Sep 25 Due: Sep 28 at 9:00 AM
Week 6
Progress Reflection
Release: Oct 2 Due: Oct 5 at 9:00 AM
Week 7
Progress Reflection
Release: Oct 9 Due: Oct 14 at 9:00 AM
Week 8
Progress Reflection
Release: Oct 16 Due: Oct 19 at 9:00 AM
Week 9
Progress Reflection
Release: Oct 23 Due: Oct 26 at 9:00 AM
Week 10
Progress Reflection
Release: Oct 30 Due: Nov 2 at 9:00 AM
Week 11
Progress Reflection
Release: Nov 6 Due: Nov 9 at 9:00 AM
Week 12
Progress Reflection
Release: Nov 13 Due: Nov 16 at 9:00 AM
Week 13
Progress Reflection
Release: Nov 20 Due: Nov 30 at 9:00 AM
Week 14
Progress Reflection
Release: Dec 4 Due: Dec 7 at 9:00 AM
Final
Final Progress Reflection
Release: Dec 10 Due: Dec 14 at 6:30 PM
Phase 0
Release: Aug 24 Due: Aug 28 at 11:59 PM
Phase 1
Release: Aug 31 Due: Sep 4 at 11:59 PM
Phase 2
Release: Sep 7 Due: Sep 24 at 11:59 PM
Phase 3
Release: Sep 24 Due: Oct 28 at 11:59 PM
Phase 4
Release: Oct 28 Due: Nov 2 at 11:59 PM
Phase 5 Option A
Release: Nov 2 Due: Dec 7 at 11:59 PM
Phase 5 Option B
Release: Nov 2 Due: Dec 7 at 11:59 PM