Skip to content

Course Syllabus

Course: SE 3250

Division: Natural Science and Math
Department: Computer Science & Engineering
Title: Survey of Languages

Semester Approved: Fall 2019
Five-Year Review Semester: Spring 2025
End Semester: Summer 2025

Catalog 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.

Semesters Offered: Fall
Credit/Time Requirement: Credit: 3; Lecture: 3; Lab: 0

Prerequisites: CS 2420, Acceptance into the Software Engineering BS Program

Corequisites: SE 3520 SE 3820


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:
Understand the tradeoffs between, use cases for, and theory behind different types of programming languages. Students will demonstrate this by homework, quizzes, and projects.

Feel comfortable with their ability to learn and use unfamiliar programming languages. Students will demonstrate this by programming projects.

Be exposed to and implement programs in a wide variety of programming languages that are used in the software industry. Students will demonstrate this by programming projects.


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.


Key Performance Indicators:
Projects 40 to 50%

Homework 25 to 30%

Quizzes 10 to 15%

Final Project 10 to 20%


Representative Text and/or Supplies:
There is no required textbook for this course. Readings will be assigned from publicly available online sources.


Pedagogy Statement:
This course will be delivered through lecture, group discussion, student presentation, and in-class work on programming exercises.

Instructional Mediums:
Lecture

Maximum Class Size: 24
Optimum Class Size: 20