CS 3060: Programming Languages
CS 3060:Programming Languages
Semester Hours: 3.0
Contact Hours: 3
Coordinator: Sankardas Roy
Text: Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages
Author(s): Bruce A. Tate
Year: 2010
SPECIFIC COURSE INFORMATION
Catalog Description
Examination of a wide variety of programming languages, paradigms, features, and syntaxes through exposure to theory and hands on exercises. Topics covered include static, dynamic, strong and weakly typed, compiled and interpreted, object-oriented, functional and procedural programming, and decision constructs. Prerequisite: Grade of C or better in CS 2020.
Course type:REQUIRED
SPECIFIC COURSE GOALS
- I can identify differences and similarities across programming languages.
- I can describe the differences between different programming paradigms.
- I can implement basic algorithms using different programming paradigms.
- I can explain the strengths and weaknesses of different type systems.
- I can explain the differences between program compilation and interpretation.
COMPUTER SCIENCE STUDENT OUTCOMES ADDRESSED BY THIS COURSE
- CS 1 Analyze a complex computing problem and to apply principles of computing and other relevant disciplines to identify solutions
- CS 2 Design, implement, and evaluate a computing-based solution to meet a given set of computing requirements in the context of the program’s discipline
- CS 6 Apply computer science theory and software development fundamentals to produce computing-based solutions
LIST OF TOPICS COVERED
- Encapsulation, Polymorphism, Inheritance
- Higher Order Functions
- Purity (Side Effect Free)
- Immutability
- Lazy Evaluation
- Recursion
- Lambda Calculus
- Static & Dynamic Typing
- Garbage Collection
- Interpreted vs. Compiled Languages
COMPUTER SECURITY TOPICS
Faculty who recently offered CS 3060 have discussed and identified a list of topics related to computer security in this course. Below is a list for instructors to incorporate. (*) indicates topics are mandatory.
Security Topic |
Description |
Textbook Reference1 |
Estimated Class Hours |
Security vulnerability due to side effects |
Unexpected side effects can cause security vulnerability. We can construct an example showing side effect problem being present in an object-oriented programming language (e.g., Java) whereas a functional language like Haskell can help us control side effect. |
No textbook. An example is available in Appendix |
1 |
Type system as a security guard |
Using a weakly typed language may lead to bugs or security issues. We can construct a few examples in C, C++, PHP, JavaScript, etc. On the other hand, Java is strongly typed. However, that does not mean it always leads to secure code. |
Chapter 5. Figure 5-24 (available in Appendix) |
2 |
1Secure Coding in C and C++ by Robert Seacord (2006).
A few concrete examples are available as Appendix which can be found in the folder hosting additional material related to Computer Security.
Updated: 12/03/2025 04:21PM