CPSC 3400
Topics
- Common paradigms, features, organization, and tradeoffs of modern programming
languages
- Semantics
- Garbage Collection
- Memory Management
- Type Systems
- Compiler Design (Lexing, Parsing, Code Generation, Interpreters)
- Theoretical foundations of languages and computation
- Regular Expressions
- Language Classification
- Grammars
- Finite State Automata (NFA/DFA)
- Turing Machines
- Programming using scripting languages and functional languages
Tabulate the results of a survey where people were asked to vote for their top
three favorite colors. The results of the survey are stored in an input file.
More information can be found
here.
A program that parses a string representation of a time and returns them in a
Python data structure (tuple).
More information can be found
here.
Simulation of a Mark-and-Sweep Garbage Collector with Variables, Pointers, and
Heap blocks.
More information can be found
here.
A collection of functions written in F#
— a functional programming language.
Featuring tail recursion, pattern matching, and discriminated unions.
Max Cylinder Volume
Takes in a list of floating-point tuples that represent dimensions of a cylinder and returns the volume of the cylinder that has the largest volume. Uses tail recursion.
Eliminate Consecutive Duplicates
Takes in a list of integers and eliminates consecutive duplicates; replacing them with a single instance of the value. Order is preserved and non- consecutive duplicates are unaffected. Uses tail recursion.
Binary Search Tree
An implementation of a binary search tree with insert
, search
, and count
using a discriminated union.
More information can be found here.
Simplifies an algebraic expression with recursion, pattern matching, and a
discriminated union. Supports addition, subtraction, multiplication, and
division.
More information can be found
here.
- Simple Python regular expressions
- Deterministic Finite State Automata for accepting/rejecting strings
More information can be found here.
- Context-Free Grammars for accepting/rejecting strings in a defined Regular Language
- Turing Machine for accepting/rejecting strings matching a Regular Expression with backreferences
- Turing Machine for transforming an input string
More information can be found here.
A program that parses and executes a script written in a custom scripting
language. This custom scripting language is composed of sequential pipelines
that perform basic operations on data (similar to SQL, Awk, Sqlunk's query
language, etc.). The input data is stored in a CSV file.
More information can be found
here.
Assignments created by Professor Kevin Lundeen.