-
Notifications
You must be signed in to change notification settings - Fork 20
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add fundamentals of programming & intro to Scala syntax #4
Comments
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! |
This provides a rough direction and level of abstraction that I think is useful for very very new programmers when it comes to making that leap to understanding variables. I purposely stayed away from mutation (var/val) and using names like functions or types Ref: scalabridge#4
This is incomplete, but I want to get this up early for review to make sure it is a useful level of abstraction and discussion There are several things we can talk about here: - Hoare logic - Decision trees Obviously, we need actual code here. Ref: scalabridge#4
This adds some playground type stuff for the REPL and sticks it at the beginning of this section, leaving the larger discussion for after students have time to play around with the REPL. Ref: scalabridge#4
OK -- I'm volunteering to do the LIST intro and exercises! Will submit PR remotely later! |
Boolean logic is so amazing that I can barely controll my excitement. I hope to pursuade students to explore the things they learn by playing in the REPL and trying to answer their own questions by trying it out. Ref: scalabridge#4
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 |
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. |
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. |
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) |
Some attendees will be completely new to programming. We want material that covers the basics of programming:
This section can also introduce Scala syntax
The text was updated successfully, but these errors were encountered: