Skip to content

IaniLo/coursera-labs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status

Functional Programming Principles in Scala

Quick References

The original assignments from the Scala course on Coursera. Inside some folders you'll find some more explanation about that specific assignment. I also provided a cheatsheet for most important aspects of the course.

This Specialization provides a hands-on introduction to functional programming using the widespread programming language, Scala. It begins from the basic building blocks of the functional paradigm, first showing how to use these blocks to solve small problems, before building up to combining these concepts to architect larger functional programs. You'll see how the functional paradigm facilitates parallel and distributed programming, and through a series of hands on examples and programming assignments, you'll learn how to analyze data sets small to large; from parallel programming on multicore architectures, to distributed programming on a cluster using Apache Spark. A final capstone project will allow you to apply the skills you learned by building a large data-intensive application using real-world data.

The goal of this assignment is to familiarize yourself with the infrastructure and the tools required during this class. Even though the grade in this assignment will be excluded from your final grade for the course, it is important that you work through this assignment carefully.

https://www.coursera.org/course/progfun

Week1

Getting Started : Functions & Evaluation

Get up and running with Scala on your computer. In this section you'll learn the difference between two paradigms functional programming paradigm and functional imperative programming. We are going to step through the basics of Scala; covering expressions, evaluation, conditionals, functions, and recursion.

Assignment: Recursion

Week2

Higher Order Functions

In this section, we'll learn about functions as first-class values, and higher order functions. We'll also learn about Scala's syntax and how it's formally defined. Finally, we'll learn about methods, classes, and data abstraction through the design of a data structure for rational numbers.

Assignment: Functional Sets

Week3

Data and Abstraction

This section, we'll cover traits, and we'll learn how to organize classes into hierarchies. We'll cover the hierarchy of standard Scala types, and see how to organize classes and traits into packages. Finally, we'll touch upon the different sorts of polymorphism in Scala.

Assignment: Object-Oriented Sets

Week4

Types and Pattern Matching

This session we'll learn about the relationship between functions and objects in Scala; Functions are objects! We'll go deep into Scala's type system, covering subtyping and generics, and moving on to more advanced aspects of Scala's type system like variance. Finally, we'll cover Scala's most widely used data structure, Lists, and one of Scala's most powerful tools, pattern matching.

Assignment: Huffman Coding

Week5

Lists

This section we'll cover in more details the most commonly-used data structure in Scala - List.

Assignment: None

Week6

Collections

After a deep-dive into Lists, this session we'll explore other data structures; vectors, maps, ranges, arrays, and more. We'll dive into Scala's powerful and flexible for-comprehensions for querying data.

Assignment: Anagrams

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages