Is this class about learning Scala or about learning functional programming?
This class aims to teach us the basic principles of functional programming, just as it says on the tin. To achieve that goal, we will be exposed to a small functional subset of Scala, but learning that is not the same as achieving comprehensive understanding of Scala as a language, nor is it entirely sufficient to start using Scala in real-world applications.
Do I need prior experience for this class?
This class is not really designed to be approachable as your first Computer Science class. A year of programming experience is recommended before taking it. The class is relatively fast-paced and won't cover the very fundamentals of programming in much depth, assuming you're already familiar with those. On the other hand, if you come from largely imperative programming background, you may need to leave behind some of your assumptions as to what programming is about and how it's done.
Are there any other prerequisites?
Apart from high school math and sufficient English to watch the videos and read the assignment handouts, no. A little familiarity with (very basic) formal logic and set theory may help with some of the assignments, but you should be able to easily catch up as you go (you can learn all the set theory you're going to need in this class in half an hour).
My assignment deadline is displayed as 12:59 AM. Does that mean 12:59 in 24-hour clock format?
No. This means 00:59. Adjust your schedule accordingly. (It's probably a good idea to aim at completing the assignments at least a few days before the deadline anyway.)
Can I submit my assignment solutions as many times as I want?
No. We're only given five submission attempts to solve each weekly programming assignment. You may continue to submit your solutions once you've run out of attempts, and you will receive grader feedback for those, but these submissions won't count towards your final grade.
Can I use var
s? Stateful loops?
No. We will be concentrating on a strictly functional subset of Scala. None of those features are needed, or desirable, to solve the problems in weekly programming assignments. You may want to consult the Scala Style Guide (see the sidebar).
The grader will check your solutions for compliance with the Style Guide.
The tests provided in assignment starter code seem sketchy. Can I rely on them?
No. We're expected to write our own tests to ensure correctness of our implementations. This is an important part of programming assignments. Note that relying on provided tests only would be quite unwise: after submitting your assignment the grader will use a much more extensive held out test suite to check your code for correctness.