PROG24310
Programming Languages
Sheridan
 
  I: Administrative Information   II: Course Details   III: Topical Outline(s)  Printable Version
 

Land Acknowledgement

Sheridan College resides on land that has been, and still is, the traditional territory of several Indigenous nations, including the Anishinaabe, the Haudenosaunee Confederacy, the Wendat, and the Mississaugas of the Credit First Nation. We recognize this territory is covered by the Dish with One Spoon treaty and the Two Row Wampum treaty, which emphasize the importance of joint stewardship, peace, and respectful relationships.

As an institution of higher learning Sheridan embraces the critical role that education must play in facilitating real transformational change. We continue our collective efforts to recognize Canada's colonial history and to take steps to meaningful Truth and Reconciliation.


Section I: Administrative Information
  Total hours: 42.0
Credit Value: 3.0
Credit Value Notes: N/A
Effective: Fall 2023
Prerequisites: PROG10065
Corequisites: N/A
Equivalents: N/A
Pre/Co/Equiv Notes: N/A

Program(s): Hon Bach CompSci - Mobile Comp, Hons Bach of Computer Science
Program Coordinator(s): Magdin Stoica, El Sayed Mahmoud
Course Leader or Contact: Alex Babanski
Version: 20230905_02
Status: Approved (APPR)

Section I Notes: N/A

 
 
Section II: Course Details

Detailed Description
Students focus on various concepts and principles underlying the design and use of modern programming languages. Students learn about programming languages in the context of procedural, object-oriented, functional and hybrid programming languages. Topics include data and control structuring constructs, facilities for modularity and data abstraction, polymorphism, syntax, and formal semantics. Students learn about these programming language paradigms through lectures, hands-on exercises and assignments

Program Context

 
Hon Bach CompSci - Mobile Comp Program Coordinator(s): Magdin Stoica
This required second year course provides a comprehensive foundation to the principles and paradigms of modern programming languages. This course builds on the students skills and knowledge developed in the mathematics and software development courses. The course provides a foundation of programming language principles and paradigms (i.e., procedural, object-oriented, functional and hybrid programming languages). This course is fundamental to future application development courses in computer science.

Hons Bach of Computer Science Program Coordinator(s): El Sayed Mahmoud
This required core course strengthens programming skills that will be used by future software development core courses and specialization courses related to programming. The course aims to provide a comprehensive overview of the principles and paradigms of modern programming languages. It covers programming principles. The course allows students to identify various programming paradigms such as procedural, object-oriented, functional, and hybrid programming paradigms. It advances software development skills students have developed to prepare them for the software development practices required in the future core and specialization courses.


Course Critical Performance and Learning Outcomes

  Critical Performance:
By the end of this course, students will have demonstrated the ability to evaluate the principles and paradigms of modern programming languages in terms of syntax, semantics, compile-time vs. runtime behaviour, facilities for modularity and data abstraction, and type system, inheritance, and polymorphism characteristics.
 
Learning Outcomes:

To achieve the critical performance, students will have demonstrated the ability to:

  1. Evaluate the syntax, semantics, facilities for modularity and data abstraction, type system of functional programming languages.
  2. Evaluate the syntax, semantics, facilities for modularity and data abstraction, type system of imperative programming languages.
  3. Evaluate the syntax, semantics, facilities for modularity and data abstraction, type system, inheritance, and polymorphism of object-oriented programming languages.
  4. Analyze the principles of imperative programming languages using the C programming language.
  5. Design and implement object-oriented programs in C++.
  6. Explore functional programming paradigms in a modern functional programming language (e.g., F#, Haskell, Swift).
  7. Apply knowledge of principles and paradigms of programming languages to implement solutions to problems in an appropriate programming language.
  8. Assess memory management paradigms associated with different program languages.
  9. Describe the design of programming languages in terms of syntax, semantics, compile-time vs. runtime behaviour, facilities for modularity and data abstraction, type system, inheritance, and polymorphism.

Evaluation Plan
Students demonstrate their learning in the following ways:

 Evaluation Plan: IN-CLASS
 Assignments (3 @ 10%) approx. weeks 5, 9, 1230.0%
 Quizzes (2 @ 10%) approx. weeks 6, 1220.0%
 Midterm Exam approx. week 825.0%
 Final Exam approx. week 1425.0%
Total100.0%

Evaluation Notes and Academic Missed Work Procedure:
To pass the course, students must achieve a 50% weighted average across the exams and at least 50% overall in the course. Students must submit/complete all assignments, in-class activities and projects by the scheduled due date and write all tests on the specified date/time. Exceptions will only be made under extraordinary circumstances. Refer to the School of Applied Computing's Academic Procedures for Evaluations for more details regarding missed work: Procedures for Evaluations

Provincial Context
The course meets the following Ministry of Colleges and Universities requirements:


 

Prior Learning Assessment and Recognition
PLAR Contact (if course is PLAR-eligible) - Office of the Registrar
Students may apply to receive credit by demonstrating achievement of the course learning outcomes through previous relevant work/life experience, service, self-study and training on the job. This course is eligible for challenge through the following method(s):

  • Challenge Exam
    Notes:  
  • Portfolio
    Notes:  
  • Other
    Notes:  Challenge exam, portfolio, and project are required for PLAR.

 
 
Section III: Topical Outline
Some details of this outline may change as a result of circumstances such as weather cancellations, College and student activities, and class timetabling.
Instruction Mode: In-Class
Professor: Multiple Professors
Resource(s): N/A
Applicable student group(s): PBACS - Honours Bachelor of Applied Computer Science - Mobile Computing; PBCPS - Honours Bachelor of Computer Science (all specializations)
Course Details:

    1.     Principles and Paradigms

  • Principles
  • Paradigms
  • Language design
  • Compilers and Virtual Machines 
  1. Syntax, Lexical and Syntactic Analysis
  • Grammars
  • Compilers and Interpreters
  • Lexical Analysis
  • Syntactic Analysis 
  1. Names, Types, and Type Systems
  • Variables, symbol tables
  • Static and dynamic typing
  • Recursive data types
  • Functions as types 
  1. Semantics, Semantic Interpretation
  • Expression semantics
  • Program state
  • Assignment, control flow, input/output and exception semantics 
  1. Functions, and Function implementation
  • Basic Terminology
  • Parameter Passing Mechanism
  • Function Declaration and Call
  • Semantics of Function Call and Return 
  1. Memory Management
  • The Heap
  • Garbage Collection Mechanisms
  • Memory management with C and C++ 
  1. Imperative Programming Language Principles and Paradigms
  • Overview of the characteristics of imperative languages
  • Procedural abstraction
  • Expressions and assignment
  • Programming in C 
  1. Object-Oriented Programming Language Principles and Paradigms
  • Overview of properties of object-oriented languages
  • The Object Model (Classes, encapsulation, inheritance, polymorphism, templates, abstract classes, interfaces) and its use in C++
  • Programming in C++ 
  1. Functional Programming Language Principles and Paradigms
  • Overview of the characteristics of functional languages
  • Expressions, Lists, Elementary Types and Values, Control flow, Defining and using functions


Sheridan Policies

It is recommended that students read the following policies in relation to course outlines:

  • Academic Integrity
  • Copyright
  • Intellectual Property
  • Respectful Behaviour
  • Accessible Learning
All Sheridan policies can be viewed on the Sheridan policy website.

Appropriate use of generative Artificial Intelligence tools: In alignment with Sheridan's Academic Integrity Policy, students should consult with their professors and/or refer to evaluation instructions regarding the appropriate use, or prohibition, of generative Artificial Intelligence (AI) tools for coursework. Turnitin AI detection software may be used by faculty members to screen assignment submissions or exams for unauthorized use of artificial intelligence.

Course Outline Changes: The information contained in this Course Outline including but not limited to faculty and program information and course description is subject to change without notice. Nothing in this Course Outline should be viewed as a representation, offer and/or warranty. Students are responsible for reading the Important Notice and Disclaimer which applies to Programs and Courses.


[ Printable Version ]

Copyright © Sheridan College. All rights reserved.