Document Type

Syllabus

Publication Date

Spring 2024

Course Description

This course covers four topics fundamental to computer science. Each of these topics speaks to how computations are performed, at one level or another. The four topics are:

  • Functional Programming is a programming paradigm that treats computation as the evaluation of a mathematical function. It avoids the use of state, side effects, and mutable data to make it easier to understand and predict the behavior of the program. In this course, we will use a functional programming language named Erlang.
  • Graph Theory is the study of graphs, which are mathematical models of groups of objects and connections between pairs of them. The objects are typically called vertices (singular is vertex) or nodes; the connections are typically called edges. Many types of problems in computer science can be described using graphs, and we will study many important algorithms used to solve problems on graphs.
  • Digital Logic is fundamental to the operation of computers, and is basically the computer hardware implementation of Boolean algebra. We will investigate how we can implement AND, OR, NOR, XOR, and more complicated logic forms, and look at techniques for more complicated calculations, such as adding and multiplying numbers in binary.
  • Computational Theory is the field of studying computation and computability. Most of our work in this area will focus on automata theory, or looking at how computation can be modeled at a theoretical level. We will discuss discrete finite automata and grammars, as well as a brief look at computability.

Student Outcomes

Students who successfully complete this course will be able to do the following:

  • Understand programs written in the Erlang programming language
  • Solve problems using Erlang code
  • Determine the running time of recursive code, including Erlang code
  • Solve various graph-oriented problems, including using search algorithms, using minimum- spanning tree algorithms, and using shortest paths algorithms
  • Understand how Boolean logic gates are used to produce more complicated circuits
  • Solve problems using Boolean logic gates and circuits
  • Solve problems involving various theoretical constructs of computer science, including finite- state automata, regular expressions, and Turing machines

Share

COinS