20CYS312 - Principles of Programming Languages 

Pre-requisite: 20CYS113 - Computer Programming and 19CSE201 - Advanced Programming
Course Instructor: Ramaguru R, Assistant Professor (Senior Grade), TIFAC-CORE in Cyber Security.
:books: Course Outcome
| CO# |
CO Description |
| CO1 |
Understand and implement pure functional programs in Haskell |
| CO2 |
Understand and implement programs in Rust |
| CO3 |
Formulate abstractions with higher order procedures |
:watch: Course Plan and Status
| Lecture No. |
Topic |
CO |
No. of Hours |
| # |
Course and Class Introduction |
# |
 |
| 1 |
Programming Paradigms - Overview of various Programming Paradigms |
# |
 |
| # |
Assignment - 1 |
CO1 |
 |
| 2 |
Introduction to Functional Programming |
CO1 |
 |
| 2 |
Programming with Haskell |
CO1 |
 |
| 3 |
Haskell: GHCi interpreter |
CO1 |
 |
| # |
Practice Exercises - 1 |
CO1 |
Evaluate on next Lab |
| 4 |
Haskell: functions and types |
CO1 |
 |
| # |
Quiz - 1 and Lab Evaluation - 1 |
CO1 |
 |
| 5 |
Haskell: functional composition |
CO1 |
 |
| 3 |
Haskell: GHCi interpreter |
CO1 |
 |
| 6 |
Haskell: numbers, lists, tuples |
CO1 |
 |
| 7 |
Haskell: type classes, pattern matching |
CO1 |
 |
| # |
Tutorial Exercises - 2 |
CO1 |
Evaluate on next Lab |
| 8 |
Haskell: higher order functions: currying, lambdas, maps and filters folds, IO monad. |
CO3 |
 |
| # |
Quiz - 2 and Lab Evaluation - 2 |
CO1 |
 |
| # |
Assignment - 2 |
CO1 |
 |
| # |
Mid-Term Examination |
CO1, CO3 |
 |
| 9 |
Introduction to Rust |
CO2 |
 |
| 10 |
Rust: Data types, Operators, Decision Making, Loops |
CO2 |
|
| 11 |
Rust: Functions, Tuple and Array |
CO2 |
|
| 12 |
Rust: Ownership, Borrowing, Slices |
CO2 |
|
| 13 |
Rust: Structure, Modules |
CO2 |
|
| 14 |
Rust: Error Handling |
CO2 |
|
| 15 |
Rust: Package Manager |
CO2 |
|
| # |
End-Semester Examination |
|
|
Dates and Deadlines
| Course Start |
08 - Jan - 2024 |
| Assignment - 1: Opens |
09 - Jan - 2024 |
| Assignment - 1: Submission |
21 - Jan - 2024 |
| Haskell Practice Exercise - 1: Opens |
24 - Jan - 2024 |
| Haskell Practice Exercise - 1: Submission |
27 - Jan - 2024 |
| Haskell Quiz - 1 |
16 - Feb - 2024 |
| Haskell Lab Evaluation - 1 |
28 - Feb - 2024 |
| Haskell Practice Exercise - 2: Opens |
23 - Feb - 2024 |
| Haskell Practice Exercise - 2: Submission |
26 - Feb - 2024 |
| Haskell Quiz - 2 |
13 - Mar - 2024 |
| Haskell Lab Evaluation - 2 |
13 - Mar - 2024 |
| Haskell Tutorial - 1: Opens |
14 - Mar - 2024 |
| Haskell Tutorial - 1: Submission |
15 - Mar - 2024 |
| Haskell Tutorial - 1: Opens |
22 - Mar - 2024 |
| Haskell Tutorial - 1: Submission |
27 - Mar - 2024 |
| Mid-Term Exam |
24 - Apr - 2024 |
| Assignment - 2: Opens |
29 - Apr - 2024 |
| Assignment - 2: Submission |
11 - May - 2024 |
| Rust Quiz - 3 |
11 - May - 2024 |
| End Semester Exam |
15 - May - 2024 |
| Results Publication |
19 - Jun - 2024 |
Haskell
Resources
Rust
Resources