scalabridge / curriculum

materials and resources for workshop curriculum
19 stars 20 forks source link

Add fundamentals of programming & intro to Scala syntax #4

Open robinske opened 8 years ago

robinske commented 8 years ago

Some attendees will be completely new to programming. We want material that covers the basics of programming:

This section can also introduce Scala syntax

DagnyTagg2013 commented 8 years ago

How are comments saved here? Wanted to suggest adding IntelliJ IDE Worksheets exercises via *.sc. Most professional developers work with IDEs as productivity boosters. Suggest newbies not waste time with command-line. I can contribute several from my personal repos!

DagnyTagg2013 commented 8 years ago

OK -- I'm volunteering to do the LIST intro and exercises! Will submit PR remotely later!

noelwelsh commented 8 years ago

Some general thoughts on curriculum. The most common way to teach programming is what I call the "bag of syntax" approach. It introduces a programming language as a collection of syntax and gives the student no tools to decompose problems or implement solutions using that language. Students are expected to just intuitively understand how to do this. I recall this from both my intro to programming and my experiences as a TA on 1st year programming.

The approach I learned from the PLT group is to teach programming patterns and introduce language features as they support the patterns. For example, in Creative Scala we emphasise structural recursion (first over natural numbers, then over lists) as the pattern for processing algebraic data types. How to Design Programs, which we've basically ripped off in all our training, has a fairly rigorous design process that does a very good job of making programming a systematic process. We aren't so rigorous in our own training but these ideas underly everything we do.

Our curriculum in Essential Scala is:

In Creative Scala we spend much more time on substitution (or will, once that's been written 😄 ), and the majority of the book uses structural recursion, with map and flatMap introduced as abstractions over structural recursion, and algebraic data types introduces at the end.

DagnyTagg2013 commented 8 years ago

Hey there!

Submitted a pull request today for:

I'm going to advocate for the following minor tweaks to our teaching approach; and please review my pull request which attempts to demonstrate what I mean:

The motivation for making these minor tweaks is to encourage the Learner not to self-limit, and to make their learning process more enjoyable and productive by fast-tracking them towards professional-level coding approaches to solving problems effectively with Scala.

DagnyTagg2013 commented 8 years ago

Oh! And, I'm not a professional Scala person. My perspective is from someone who wants these points for my own learning experience; and from the perspective that if I were to teach this to my daughter at around 12 years old -- this CAN be done simply because this subject CAN be made accessible.

robinske commented 8 years ago

Update! This is in progress via https://github.com/railsbridge/docs/compare/master...scalabridge:rewrite-for-scala?expand=1

I'm incorporating Scala code examples and some beginner-level specifics for Scala idioms (like @DagnyTagg2013's point about immutable lists)