This course introduces the fundamental programming language concepts of data, type, control, abstraction, and structure; software development and execution environments; and programming language paradigms.
This is a required course for the Bachelor of Science in Software Engineering. This course give students exposure to a wide variety of programming languages and practice at learning many unfamiliar technologies. It is required for the Bachelor's of Software Engineering, and is similar to CS 4700 ("Programming Languages") offered at Utah State University.
This course will be divided into modules each covering a representative programming/computing language. We will discuss the use cases and thought patterns that the languages address. Additionally, for each module the students will be expected to learn to develop and debug in a language from the family being studied and complete a project using it.
Students will gain experience in approximately six languages. Here are some representative examples:
- Interpreted/Scripting (Imperative) (e.g. Python, Ruby)
- Compiled (Imperative) (e.g. Swift, Rust, Go)
- Functional Programming (e.g. Haskell, Lisp, Scala)
- Scientific/Statistical Computing (e.g. Julia, MatLab, R+tidyverse, python+pandas)
- Declarative Languages (e.g. Datalog, Prolog, Regular Expressions)
- Other (e.g. Scratch)
Students will be expected to complete a final project and presentation which will consist of learning a language of their choice, completing a project in that language, and giving a short presentation to the class.