COMP 4400 - Resources
Overview
In COMP-4400, you will embark on a journey to explore different programming paradigms (most likely logical and functional). These paradigms offer unique approaches to solving problems and designing software systems. Along the way, you will become acquainted with several new programming languages, each tailored to a specific paradigm. You'll most likely need to learn Prolog, Scheme, and Lambda Calculus.
Programming Paradigms
Logical Paradigm
The logical paradigm is a programming approach that emphasizes declarative reasoning and rule-based logic to solve problems. It is particularly well-suited for tasks involving knowledge representation, artificial intelligence, and symbolic reasoning. In COMP-4400, you will delve into this paradigm through the study of Prolog.
Prolog
Prolog stands for "Programming in Logic." It is a high-level, declarative programming language primarily used for symbolic reasoning and rule-based problem solving. Prolog programs are constructed using a series of facts and rules, and the language's inference engine works to deduce answers from these logical constructs. Prolog is widely used in fields like natural language processing, expert systems, and knowledge representation.
In Prolog, you define relationships and constraints using predicates and clauses. The Prolog interpreter, known as the Prolog engine, takes these definitions and performs backward chaining inference to find solutions to queries. This allows you to express complex problem-solving tasks in a concise and intuitive manner.
Functional Paradigm
The functional paradigm is a programming approach that treats computation as the evaluation of mathematical functions. It emphasizes immutability, pure functions, and higher-order functions to model and solve problems. In COMP-4400, you will explore this paradigm through the study of Scheme and Lambda Calculus.
Scheme
Scheme is a dialect of Lisp (List Processing) and one of the oldest functional programming languages. Scheme promotes the use of recursion, first-class functions, and lexical scoping, which are fundamental aspects of functional programming.
In Scheme, you'll work with immutable data structures and define functions as first-class citizens. This means functions can be passed as arguments to other functions and returned as results, allowing for concise and expressive code. Scheme's minimalistic syntax also encourages a clear and readable coding style.
Lambda Calculus
Lambda Calculus is a formal system that serves as the foundation for functional programming. While not a practical programming language like Prolog or Scheme, it plays a crucial role in understanding the theoretical underpinnings of functional programming. Lambda Calculus consists of a set of rules for defining and applying functions.
Useful Resources
Here are some useful links to get started with each of the different programming languages in COMP-4400: