Course Summary
This course teaches advanced programming concepts using the Scala language, including functional and object-oriented programming.Key Learning Points
- Learn to program in the functional programming paradigm
- Understand advanced programming concepts such as type inference, type classes, and abstract data types
- Develop skills in using the Scala programming language
Related Topics for further study
- Functional Programming
- Scala Programming Language
- Object-Oriented Programming
- Type Inference
- Abstract Data Types
Learning Outcomes
- Develop advanced programming skills using Scala
- Understand functional and object-oriented programming paradigms
- Apply advanced programming concepts in real-world scenarios
Prerequisites or good to have knowledge before taking this course
- Basic programming knowledge
- Familiarity with programming concepts such as data types, variables, and functions
- Access to a computer with an internet connection
Course Difficulty Level
AdvancedCourse Format
- Online
- Self-paced
Similar Courses
- Functional Programming Principles in Scala
- Functional Programming in Haskell
- Functional Programming in Java
Related Education Paths
Notable People in This Field
- John A. De Goes
- Erik Osheim
- Jon Pretty
Related Books
Description
In this course you will learn how to apply the functional programming style in the design of larger applications. You'll get to know important new functional programming concepts, from lazy evaluation to structuring your libraries using monads. We'll work on larger and more involved examples, from state space exploration to random testing to discrete circuit simulators. You’ll also learn some best practices on how to write good Scala code in the real world.
Outline
- For Expressions and Monads
- Tools Setup for Linux
- Tools Setup for Mac OS X
- Tools for Setup for Windows
- Tutorial: Working on the Programming Assignments
- Recap: Functions and Pattern Matching
- Recap: Collections
- Lecture 1.1 - Queries with For
- Lecture 1.2 - Translation of For
- Lecture 1.3 - Functional Random Generators
- Lecture 1.4 - Monads
- Troubleshooting
- Grading Policy
- Tools Setup
- Sbt Tutorial
- IntelliJ IDEA Tutorial
- Scala Tutorial
- Cheat Sheet
- Reactive Cheat Sheet
- Scala Style Guide
- Learning Resources
- Lazy Evaluation
- Lecture 2.1 - Structural Induction on Trees
- Lecture 2.2 - Streams
- Lecture 2.3 - Lazy Evaluation
- Lecture 2.4 - Computing with Infinite Sequences
- Lecture 2.5 - Case Study: the Water Pouring Problem
- Type-Directed Programming
- Motivating Example
- Type-Directed Programming
- Type Classes
- Conditional Implicit Definitions
- Implicit Conversions
- Conditional Implicit Definitions
- Functions and State
- Lecture 4.1 - Functions and State
- Lecture 4.2 - Identity and Change
- Lecture 4.3 - Loops
- Lecture 4.4 - Extended Example: Discrete Event Simulation
- Lecture 4.5 - Discrete Event Simulation: API and Usage
- Lecture 4.6 - Discrete Event Simulation: Implementation and Test
- Timely Effects
- Lecture 5.1 - Imperative Event Handling: The Observer Pattern
- Lecture 5.2 - Functional Reactive Programming
- Lecture 5.3 - A Simple FRP Implementation
- Conclusion
Summary of User Reviews
Learn functional programming concepts and techniques with this online course on Coursera. Students praise the course for its challenging yet rewarding content and hands-on approach to learning. One key aspect that many users thought was good is the interactive programming assignments that challenge students to apply what they've learned in real-world scenarios.Pros from User Reviews
- Challenging yet rewarding content
- Hands-on approach to learning
- Interactive programming assignments
- Clear and concise explanations
- Great community support
Cons from User Reviews
- Some programming assignments can be too difficult for beginners
- Course can be time-consuming
- Not enough focus on object-oriented programming
- Lack of feedback on programming assignments
- Some course materials can be outdated