Abstract

The Computer Science Curricula 2013 (CS2013) calls for undergraduate CS programs to expose their students to the models underlying different programming languages as well as the principles on which language features are defined, composed, and implemented. Although an upper division “Programming Languages (Foundations)” course is common in many CS programs in United States, such a course is rare in Chinese CS undergraduate programs. This is partly due to the challenge of balancing the breadth and depth of topics covered in such a course. Another common concern is the balance between theory and practice. This paper reports our experience in designing “Foundations of Programming Languages” at USTC. Following the exemplar Programming Languages courses in CS2013, this 15-week course covers scripting, functional, logic and systems languages, presenting their principle features and design/implementation issues. The topics include modern language features (e.g. closures), principles (e.g. lambda calculus and logic), control flow and runtime components (e.g. memory management and concurrency). The paper describes how four selected languages (Lua for scripting, OCaml for functional, Datalog for logic and Rust for systems) work together to provide practical experiences for students on concepts that would be considered too abstract. It also includes discussions of student performance on selected projects.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call