Comparative Programming Languages Course – CS 4402
While most of the industry uses either procedural or object-oriented programming languages, there are entire families of other languages with certain strengths and weaknesses that make them attractive to a variety of problem domains. This course will introduce and discuss both the history and relevant features of both imperative and non-imperative programming languages. The course will cover topics such as syntax and semantics, essential concepts including data types, control structures, subprograms and advanced topics such as polymorphism, and object-oriented programming. The course will explore both functional and logic programming as examples of non-imperative programming languages. This course is a bit different from other courses within the curriculum in that it has no project assignments. Several of the units have non-graded exercises that provide hands-on exposure to some of the programming language concepts that will be studied within the course, however, the course is designed to be primarily a theory course. Grades will be determined primarily on the basis of discussions and exams.
This course has been developed to follow the text and course design recommendations provided by M. Ben-Ari of the Weizman Institute of Science. These materials are used with the permission of Professor Ben-Ari. The University of the People recognizes and appreciates the contribution made by Professor Ben Ari in the use of his text and supporting materials and resources. The text is available for download from the course site in the references section.
Learning Objectives and Outcomes:
By the end of this course students will be able to:
- Recognize the various schools or paradigms of programming languages including imperative languages (procedural and scripting languages, data-oriented languages, object-oriented languages) and non-imperative languages (functional and logic programming).
- Define the principles and components of programming language design, such as control structures, names, and data types.
- Recognize elements of syntax and semantics for a language.
- Recognize strong vs. weak and static vs. dynamic typing in programming languages.
- State the basic requirements for effective programming language design.
- Identify the limitations of programming languages from within a historical perspective.
- Classify the programming constructs that appear in imperative, functional, and logic programming languages.
Course Schedule and Topics
This course will cover the following topics in eight learning sessions, with one Unit per week. The Final Exam will take place during Week/Unit 9 (UoPeople time).
Week 1: Unit 1– Introduction to Programming Languages
Week 2: Unit 2- Elements of Programming Languages
Week 3: Unit 3– Data Types
Week 4: Unit 4 – Control Structures and Subprograms
Week 5: Unit 5– Object-Oriented Programming
Week 6: Unit 6- Scripting Languages
Week 7: Unit 7- Functional Programming
Week 8: Unit 8- Logic Programming
Week 9: Unit 9- Review and Final Exam
Learning Guide
The following is an outline of how this course will be conducted, with suggested best practices for students.
Unit 1: Introduction to Programming Languages
- Read the Learning Guide and Reading Assignments
- Participate in the Discussion Assignment (post, comment, and rate in the Discussion Forum)
- Make entries to the Learning Journal
- Take the Self-Quiz
Unit 2: Elements of Programming Languages
- Read the Learning Guide and Reading Assignments
- Participate in the Discussion Assignment (post, comment, and rate in the Discussion Forum)
- Make entries to the Learning Journal
- Take the Self-Quiz
Unit 3: Data Types
- Read the Learning Guide and Reading Assignments
- Participate in the Discussion Assignment (post, comment, and rate in the Discussion Forum)
- Make entries to the Learning Journal
- Take the Self-Quiz
- Take the Graded Quiz
Unit 4: Control Structures and Subprograms
- Read the Learning Guide and Reading Assignments
- Participate in the Discussion Assignment (post, comment, and rate in the Discussion Forum)
- Make entries to the Learning Journal
- Take the Self-Quiz
Unit 5: Object Oriented Programming
- Read the Learning Guide and Reading Assignments
- Participate in the Discussion Assignment (post, comment, and rate in the Discussion Forum)
- Make entries to the Learning Journal
- Take the Self-Quiz
Unit 6: Scripting Languages
- Read the Learning Guide and Reading Assignments
- Participate in the Discussion Assignment (post, comment, and rate in the Discussion Forum)
- Complete and submit the Written Assignment
- Make entries to the Learning Journal
- Take the Self-Quiz
- Take the Graded Quiz
Unit 7: Functional Programming
- Read the Learning Guide and Reading Assignments
- Participate in the Discussion Assignment (post, comment, and rate in the Discussion Forum)
- Make entries to the Learning Journal
- Take the Self-Quiz
Unit 8: Logic Programming
- Read the Learning Guide and Reading Assignments
- Participate in the Discussion Assignment (post, comment, and rate in the Discussion Forum)
- Make entries to the Learning Journal
- Take the Self-Quiz
- Read the Unit 9 Learning Guide carefully for instructions on the Final Exam
- Take the Review Quiz
Unit 9: Course Review and Final Exam
- Read the Learning Guide and take the Review Quiz, if you haven’t already done so
- Prepare for, take, and submit the Final Exam
- The Final Exam will take place during the Thursday and Sunday of Week/Unit 9 (UoPeople time); exact dates, times, and other details will be provided accordingly by your instructor