BYU CS Logo
Computing That Serves

CS 330

Course Offerings

Section # Semester Instructor Website Description
1 Fall 2017 David Wingate https://learningsuite.byu.edu/view/AwQay9QWrjbE.html
2 Fall 2017 David Wingate https://learningsuite.byu.edu/view/AwQay9QWrjbE.html
Section # Semester Instructor Website Description
1 Winter 2018 Bryan Morse https://learningsuite.byu.edu/view/8pPEmfPhvAGb.html
2 Winter 2018 Bryan Morse https://learningsuite.byu.edu/view/8pPEmfPhvAGb.html
1 Fall 2017 David Wingate https://learningsuite.byu.edu/view/AwQay9QWrjbE.html
2 Fall 2017 David Wingate https://learningsuite.byu.edu/view/AwQay9QWrjbE.html
1 Winter 2017 David Wingate https://learningsuite.byu.edu/view/rSugMPl3oxzm.html
1 Fall 2016 David Wingate https://learningsuite.byu.edu/view/nkeI-prqCp4l.html Taught with Bryan Morse
1 Winter 2016 David Wingate https://learningsuite.byu.edu/view/YxYS5Vcfy2I3.html

Short Summary: 

Concepts of Programming Language

Credits: 

3

Prerequisites: 

Concepts of Programming Language

Principles and concepts characterizing high-level computer programming languages, process and data abstraction, encapsulation, inheritance, functional programming, logic programming, scanners, and parsers.

CS 330 Objectives and Topics

Learning Outcomes

Programming Language Familiarity

 

Learn the vocabulary of programming language design, syntax, and semantics

 

Program Language Flexibility

 

Be able to write programs using non-imperative language paradigms.

 

This course will prepare you to understand the concepts underlying programming languages and to design and implement small ones. Rather than simply surveying a bunch of languages at random, we will focus on specific concepts and languages that best embody those concepts. Even if you don't use these specific languages again, you are likely to encounter the concepts in other languages, and like many things, time spent doing something a different way often causes us to be better users of our regular tools once we return to them.

We will also work on the basics of implementing interpreters -- and language tools in general -- as well as type checking and automated memory management. Few of us will design a large mainstream language during our careers, but almost all of us will need to design and implement a small language.

Note: This course is undergoing revision from previous semesters, so please pardon the construction dust while we work through the changes.

 

 

 





Academics