Functional Programming Principles in Scala

Martin Odersky, École Polytechnique Fédérale de Lausanne

Learn about functional programming, and how it can be effectively combined with object-oriented programming. Gain practice in writing clean functional code, using the Scala programming language.

This course introduces the cornerstones of functional programming using the Scala programming language. Functional programming has become more and more popular in recent years because it promotes code that’s safe, concise, and elegant. Furthermore, functional programming makes it easier to write parallel code for today’s and tomorrow’s multiprocessors by replacing mutable variables and loops with powerful ways to define and compose functions.

Scala is a language that fuses functional and object-oriented programming in a practical package. It interoperates seamlessly with Java and its tools. Scala is now used in a rapidly increasing number of open source projects and companies. It provides the core infrastructure for sites such as Twitter, LinkedIn, Foursquare, Tumblr, and Klout.

In this course you will discover the elements of the functional programming style and learn how to apply them usefully in your daily programming tasks. You will also develop a solid foundation for reasoning about functional programs, by touching upon proofs of invariants and the tracing of execution symbolically.

The course is hands on; most units introduce short programs that serve as illustrations of important concepts and invite you to play with them, modifying and improving them. The course is complemented by a series of assignments, most of which are also programming projects.

Syllabus

Week One: Programming paradigms; overview of functional programming and the Scala programming language. Week Two: Defining and using functions, recursion and non-termination, working with functions as values, reasoning by reduction.  Week Three: Defining and using immutable objects, review of inheritance and dynamic binding. Week Four: Types and Pattern Matching Week Five: Working with Lists Week Six: Collections and Combinatorial Search Week Seven: Lazy Evaluation

Recommended Background

You should have at least one year programming experience. Proficiency with Java or C# is ideal, but experience with other languages such as C/C++, Python, Javascript or Ruby is also sufficient.

Suggested Readings

The class is designed to be self-contained. For further reading on some of the ideas in the course, we recommend Structure and Interpretation of Computer Programs - 2nd Edition (MIT Electrical Engineering and Computer Science) by Abelson and Sussman, published by MIT Press. For learning more about Scala, we recommend Programming in Scala: A Comprehensive Step-by-Step Guide, 2nd Edition by Odersky, Spoon and Venners, published by Artima Press, or else Scala for the Impatient, by Horstmann, published by Addison Wesley.

Course Format

The class will consist of lecture videos, which are between 6 and 15 minutes in length. These contain integrated quiz questions per video. There will also be standalone homeworks that are not part of video lectures.

FAQ

  • Will I get a certificate after completing this class?

    Yes. Students who successfully complete the class will receive a certificate signed by the instructor.

  • What resources will I need for this class?

    You should have the following installed: - Java Virtual Machine JDK 1.6 or higher. - A Scala distribution version 2.9 or higher The recommended development environment for the course is the Scala IDE for Eclipse. It comes with a Scala distribution so if you intend to work only in Eclipse you just need to install the Scala IDE.

  • What is the coolest thing I'll learn if I take this class?

    Write elegant code that works the first time it is run.

会期:
  • 2014年9月15日, 7 星期
  • 2014年4月25日, 7 星期
  • 2013年9月16日, 7 星期
  • 2013年3月25日, 7 星期
  • 2012年9月18日, 7 星期
  • 日期还没有被通知, 7 星期
介绍:
  • 免费:
  • 收费:
  • 证书:
  • MOOC:
  • 视频讲座:
  • 音频讲座:
  • Email-课程:
  • 语言: 英语 Gb

反馈

目前这个课程还没有反馈。您想要留第一个反馈吗?

请注册, 为了写反馈

已经在列表:
Small-icon.hover Functional Programming
Материалы по функциональному программированию
还有这个题目的:
9463_aa8c_7 Programming Java for Beginners - The Ultimate Java Tutorial
Learn Java Programming at your own Pace. Comes Complete with Working Files and...
24823_963e_7 Java for Complete Beginners
Learn to program in the Java programming language. This course assumes no prior...
136326_658d_4 Programming Without Codes
"I wish if someone could have created this course before, I would have mastered...
77020_94a5_4 Learning Java. A video guide for beginners.
This course is designed to help people with no prior exposure to Java Programming...
111712_d7d9_7 C Programming For Beginners
Learn C in ten easy steps on Windows, Mac OS X or Linux
还有标题«计算机科学»:
Regular_7d911eb6-1549-4551-aef8-7a752052d4fb Social Media Analytics: Using Data to Understand Public Conversations
How can you discover what’s being said about the things that matter to you on...
967eee29-87e8-4f2d-9257-a1b38ec07e85-2ad0c7c92b16.small IoT Sensors and Devices
Explore various IoT devices and sensor types, how they work, and how we connect...
E56e7660-bc94-46fd-95c5-ae3f765da60c-013a6523f53d.small Model-Based Automotive Systems Engineering
Learn how to model and simulate system dynamics in automotive engineering Modeling...
C9d14131-a515-462b-82e2-6eaec5bc1c17-f7c5de2ca2ae.small Using Python for Research
Take your introductory knowledge of Python programming to the next level and...
A3e17192-cf3f-4782-9aab-2206b0dc2c90-7202ea5d5042.small Business Considerations for 5G, IoT and AI
Learn how networks are being redefined to support a 5G world and what is required...
还有Coursera:
Success-from-the-start-2 First Year Teaching (Secondary Grades) - Success from the Start
Success with your students starts on Day 1. Learn from NTC's 25 years developing...
New-york-city-78181 Understanding 9/11: Why Did al Qai’da Attack America?
This course will explore the forces that led to the 9/11 attacks and the policies...
Small-icon.hover Aboriginal Worldviews and Education
This course will explore indigenous ways of knowing and how this knowledge can...
Ac-logo Analytic Combinatorics
Analytic Combinatorics teaches a calculus that enables precise quantitative...
Talk_bubble_fin2 Accountable Talk®: Conversation that Works
Designed for teachers and learners in every setting - in school and out, in...

© 2013-2019