None
Course Number:
CSCI 4230
Approved Starting Semester:
Fall 2022
Course Title:
Programming Languages
Course Description (Bulletin Description):
This course provides an overview of the principles and practical aspects of programming languages. Students will learn how programming languages are designed and implemented and will complete programming assignments using different languages and programming paradigms.
Prerequisite:
CSCI 3250
Co-requisite:
None
Pre/Co-requisite::
None
Dual-Listed:
None
Course Objectives (Course-level Student Learning Outcomes):
1. Generate a regular expression to represent a specified language. 2. Design a context-free grammar to represent a specified language. 3. Explain how typing rules define the set of operations that are legal for a type. 4. Discuss the differences among generics, subtyping, and overloading. 5. Write down the type rules governing the use of a particular compound type. 6. Write basic algorithms that avoid assigning to mutable state or considering reference equality. 7. For multiple programming languages, identify program properties checked statically and program properties checked dynamically. 8. Explain how programming language implementations typically organize memory into global data, text, heap, and stack sections and how features such as recursion and memory management map to this memory model. 9. Use a logic language to implement a conventional algorithm. 10. Correctly reason about control flow in a program using dynamic dispatch.
Topics Covered (In Outline/Calendar):
1. Regular expressions 2. context-free grammar 3. typing rules 3. type operations 4. generics 5. subtyping, 6. overloading 7. compound types 8. statically program properties 9. dynamically program properties, 10 global data, text, heap, and stack in programming language implementations 11. recursion 12. memory management 13. Logic languages 14. control flow in dynamic dispatch
Student Learning Outcomes:
- Analyze a complex computing problem and to apply principles of computing and other relevant disciplines to identify solutions. (SLO1)
- Design, implement, and evaluate a computing-based solution to meet a given set of computing requirements in the context of the program’s discipline. (SLO2)
- Apply computer science theory and software development fundamentals to produce computing-based solutions. (SLO6-CS)
Course Coordinator:
Dr. James Church
Instructor-in-charge:
Dr. James Church
Previous Professors:
Dr. James Church, Dr. Nicholas Coleman
Technologies / Skills:
Different programming languages selected by instructor
Textbook(s):
Fall 2025
Title: Concepts of Programming Languages, Global Edition
Edition: 12th
Author: Robert Sebesta
Publisher: Pearson
ISBN: 978-1292436821
========================================
Go back to choose another course