CSCI 4230


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