Giter Site home page Giter Site logo

curriculum's People

Contributors

bvenners avatar cruhland avatar dagnytagg2013 avatar jarrodu avatar jjguijt avatar jodersky avatar robinske avatar sdkarlson avatar sdolmo avatar tim-ruhland avatar tinsch avatar trane avatar yakticus avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

curriculum's Issues

Add fundamentals of programming & intro to Scala syntax

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

  • what is a variable, an expression, a method?
  • what are data structures?
  • how do i loop/map?
  • boolean logic
  • commenting
  • flow control - if/else, match/case
  • how is my code executed?
  • what is the terminal?
  • what is a REPL?
  • what is a virtual machine?
  • and more...

This section can also introduce Scala syntax

Maybe a Gitter channel?

Hi ScalaBridge. Is anyone interested in chatting about this project? A lot of Scala projects seem to be using Gitter. Maybe we could get a room there.

Add setup instructions

Terminal (how to access)
Java
Scala
Brew (or other package management)
IntelliJ?

Have guide per Operating System

Consolidate installation instructions & revamp Linux details

During the first ScalaBridge NYC workshop, one of the attendees was unable to perform the setup on Ubuntu, and none of the volunteers could figure it out, either. There were issues installing the correct packages - for instance, OpenJDK installation instructions do not work.

Even more confusing is that there are two different setup instructions (for Windows, OSX, and Linux). In this particular example, these instructions did not work, and the Creative Scala setup instructions are unhelpful:

screen shot 2017-07-01 at 9 22 10 pm

It would be great if someone could perform a full installation on Ubuntu and document the process with explicit instructions, including:

  • Correct packages to download, and how to always get the latest version
  • How to install the packages (i.e. whether to download .deb files, use a ppa, or install using apt)
  • How to upgrade from an earlier version (for example, this attendee had version 2.9.2 of Scala installed - hard to tell if existing Scala version caused a problem with installation)

@DiannaB42 please let me know if I've missed anything!

Add curriculum "schedule"

Once we've developed more of pieces, let's put it all together in a "schedule" for what the workshop day will look like

Rough outline:

  • Introductions
  • Why Scala
  • Programming fundamentals
  • Exercises
  • Project

Schedule is a loose term since students will progress at different paces.

Ideas for a project?

Students will have the opportunity to work on a small project or program during the workshop. What should this be?

Considerations:

  • Feedback is important (visual, interactive, etc.)
  • Make it flexible/creative so the attendee can engage with the project
  • Something that can be built iteratively (not everyone has to be at the same level, and people can continue to build on it after the workshop)
  • The workshop is intended to give people not only the building blocks of Scala, but to evaluate whether they want to continue learning Scala after the workshop. This project should "show off" Scala (keep in mind that attendees will be more beginner level)
  • Do we want to provide any boilerplate? (samples! examples!)

Ideas:

  • Use the Twitter API and do something with a tweet stream
  • Find the hottest day in the last year for a given zip code (let the user input the zip code of their choice)
  • Build a calculator
  • Game
  • Swing (or other desktop GUI) application
  • Play (or other web) application
  • Image generation/manipulation (e.g. draw fractals, image resizing)
  • Chat application (more advanced)
  • Command Line Twitter client (use code they wrote to tweet!)

Teach on Immutability via Basic List

Much of the scaling power of Scala lies in the core concept of Immutability.
Newbies need some kind of succinct context-framing around this to make their learning time a productive investment.

They can get this from exercises in the "Atomic Scala" book.

Please see '/curriculum/exercises' repo for 'ListBasics.sc' overview on first attempt to teach to Newbies with needed context-framing. Disclaimer: I'm a Newbie who just Googles up stuff.

NOTE: An *.sc is just an IntelliJ Scala Worksheet, which is a Scala Script that can be run within that IDE; or equivalently, pasted and run in the command-line REPL.

Gitter channel

Maybe one way to grow momentum here is via a gitter channel? This way there's a 24/7 line of communication possible to deposit and discuss ideas?

Document website deploy process / remove outdated import

There's an outdated import in the documentation, but before fixing I'd like to know whether the HTML is generated or if it should be edited manually. Also, is there a deploy process? If not, maybe using GitHub pages would be a good way to keep the documentation up to date?

As for the import, there are 11 instances of import doodle.jvm.Java2DCanvas._, which yield the following error:

<console>:41: error: object Java2DCanvas is not a member of package doodle.jvm
Note: class Java2DCanvas exists, but it has no companion object.
       import doodle.jvm.Java2DCanvas._
                         ^

One of the volunteers from BridgeWater suggested replacing it with import doodle.jvm.Java2DFrame._, but I'm not sure when or if it's necessary.

Add "Why Scala"

This will be presented at the beginning of workshops, but we should codify it in the curriculum as well

  • Functional
  • JVM
  • Elegant
  • Libraries & community for data [science]
  • Something for everyone

...but someone new to programming won't know what any of that means. Let's flush out the reasoning.

Slack Channel for helping remotely

Hi there!

My kid has classes on Sat now that school is in. I would love to chat and contribute remotely; and was hoping someone could post a link to enter a Slack group for participation!

THANK YOU for organizing!
Dagny T

Various fixes needed to install instructions

  • put doodle instructions at the top and then say that scala/sbt install is optional (with those instructions below)
  • update all instructions to refer to scala 2.12 rather than 2.11
  • update all instructions to require java 1.8 or higher
  • windows: instruct to install x64 java (and check via java -d64 -version). Didn't work on 32-bit java (possibly b/c of memory requirements)
  • windows: use native command prompt (not other shell programs. it hangs inexplicably in cygwin as well as a git shell for windows)
  • for linux/mac: update .zshrc instead of .bash_profile if using zsh. Also on linux it's .bashrc
  • update windows command snippets to reflect windows idiom (i.e., not ./sbt.bat but sbt.bat and also > instead of $)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.