Course Summary
This course teaches programming language concepts and design principles through the study of three programming language paradigms: object-oriented, functional, and concurrent. Students will learn how to use these paradigms to build programs that are efficient, elegant, and easy to maintain.Key Learning Points
- Learn the concepts and design principles of programming languages
- Study three programming language paradigms: object-oriented, functional, and concurrent
- Build efficient, elegant, and easy to maintain programs
Related Topics for further study
- Object-oriented programming
- Functional programming
- Concurrent programming
- Design principles
- Programming language paradigms
Learning Outcomes
- Understand programming language concepts and design principles
- Apply object-oriented, functional, and concurrent programming language paradigms
- Build efficient, elegant, and easy to maintain programs
Prerequisites or good to have knowledge before taking this course
- Basic knowledge of programming
- Familiarity with at least one programming language
Course Difficulty Level
IntermediateCourse Format
- Online
- Self-paced
- Video lectures
- Assignments and quizzes
- Programming assignments
Similar Courses
- Programming Languages
- Programming Languages and Compilers
Related Education Paths
Notable People in This Field
- Bjarne Stroustrup
- Simon Peyton Jones
Related Books
Description
[As described below, this is Part C of a 3-part course. Participants should complete Parts A and B first -- Part C "dives right in" and refers often to material from Part A and Part B.]
Outline
- Introduction, Course-Wide Information, and Software Installation (Start Here)
- Welcome to Part C
- Overview of Part C Concepts
- Part C Course Structure
- Start Here!
- Part C Software Installation and Use: Ruby and irb
- Section 8 and Homework 6 (First Module with Ruby)
- Introduction to Ruby
- Classes and Objects
- Object State
- Visibility
- A Longer Example
- Everything is an Object
- Class Definitions are Dynamic
- Duck Typing
- Arrays
- Blocks
- Using Blocks
- Procs
- Hashes and Ranges
- Subclassing
- Why Use Subclassing?
- Overriding and Dynamic Dispatch
- Method-Lookup Rules, Precisely
- Dynamic Dispatch Versus Closures
- Optional: Dynamic Dispatch Manually in Racket
- Section 8 Welcome Message
- Explanation of "Lesson Choices"
- Homework 6 Instructions
- Section 8 and Homework 6 (First Module with Ruby): Lesson Choices
- Section 9 and Homework 7 (Second Module With Ruby)
- OOP Versus Functional Decomposition
- Adding Operations or Variants
- Binary Methods with Functional Decomposition
- Double Dispatch
- Optional: Multimethods
- Multiple Inheritance
- Mixins
- Interfaces
- Optional: Abstract Methods
- Section 9 Welcome Message
- Explanation of "Lesson Choices"
- Homework 7 Instructions
- Section 9 and Homework 7 (Second Module With Ruby): Lesson Choices
- Section 10, Final Exam, and Course Wrap-Up
- Subtyping From the Beginning
- The Subtype Relation
- Depth Subtyping
- Optional: Java/C# Arrays
- Function Subtyping
- Subtyping for OOP
- Generics Versus Subtyping
- Bounded Polymorphism
- Summarizing All We Have Learned
- Saying Good-Bye :-)
- Section 10 Welcome Message
- Information About the Exam (Required Reading)
- Practice Final Exam
- Actual Final Exam
Summary of User Reviews
Discover the world of programming languages with Programming Languages Part C course on Coursera. This course has received positive reviews from users who found it informative and well-structured.Key Aspect Users Liked About This Course
The course is well-structured and informative.Pros from User Reviews
- The course covers a wide range of programming languages.
- The instructors provide clear explanations and examples.
- The assignments and quizzes are well-designed and challenging.
- The course is self-paced and flexible, allowing users to study at their own pace.
- The course is suitable for both beginners and experienced programmers.
Cons from User Reviews
- Some users found the course to be too basic.
- The course could benefit from more hands-on coding exercises.
- The course may not be suitable for users with limited programming experience.
- Some users found the lectures to be too long and dry.
- The course could benefit from more interactive elements.