Skip to content

Course Syllabus

SE 3250 Survey of Languages

  • Division: Natural Science and Math
  • Department: Computer Science & Engineering
  • Credit/Time Requirement: Credit: 3; Lecture: 3; Lab: 0
  • Prerequisites: CS 2420, Acceptance into the Software Engineering BS Program
  • Corequisites: SE 3520 SE 3820
  • Semesters Offered: Fall
  • Semester Approved: Fall 2019
  • Five-Year Review Semester: Spring 2025
  • End Semester: Summer 2025
  • Optimum Class Size: 20
  • Maximum Class Size: 24

Course Description

This course introduces the fundamental programming language concepts of data, type, control, abstraction, and structure; software development and execution environments; and programming language paradigms.

Justification

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.

Student Learning Outcomes

  1. Understand the tradeoffs between, use cases for, and theory behind different types of programming languages.
  2. Feel comfortable with their ability to learn and use unfamiliar programming languages.
  3. Be exposed to and implement programs in a wide variety of programming languages that are used in the software industry.

Course Content

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.