Code Monkey home page Code Monkey logo

bjc-r's Introduction

bjc-r

The Beauty and Joy of Computing labs resource repository.

Cloning this Repo

We use a project called "llab" to be able to display the lab content nicely. It's contained in the "submodule" llab which somewhat changes the way you need to work with git.

(As an aside, if you're interested, you should definitely check out llab.)

git clone --recursive

OR

git submodule init
git submodule update

To update the repo you should do this:

git pull
git submodule update

Viewing the Site

The main "production" server for labs is hosted at Berkeley, here, it lags behind this repo in content.

We also sometimes use CS10 students as lab rats, and you can view beta labs on the CS10 site.

However, the repository is setup so that any fork can be run using GitHub pages. The main BJC repo can be viewed in a live state, here, or you can use your own fork by visiting the following url: http://[username].github.io/bjc-r/, where you replace [username] with your GitHub account name.

Running Your Own Server

While GitHub pages are convenient, you'll likely want to run your own web server to make debugging changes much more quick and easy. In order to view the labs, you'll need to have an Apache server running on your machine. Here are some simple instructions for a couple different platforms.

No matter the platform, you should serve files from /bjc-r/ at the root of your server. This might not be convenient in all cases. So, you have a few options:

  1. Use a Git hook to do a find-and-replace when copying files to the destination.
  2. In your fork, replace all "absolute" paths (e.g. /bjc-r/...), with relative ones. You could also use a simple script to do this.

Mac OS X and Unix

The easiest way to setup a server is to use a simple, built-in Python server.

  1. cd into one level above the bjc-r directory.
  2. In a separate window run python -m SimpleHTTPServer (for Python 2) or python3 -m http.server for Python 3.
  3. Navigate to http://localhost:8000/bjc-r in a browser.
  4. That's it! :)

WARNING Python's SimpleServer is visible to anyone on your local network! Don't run it from ~/ or your could expose your SSH keys!

Windows

If you have python, the above method for Mac OS X will also work for you!

Contributing

A basic guide on writing labs is, here. However, for the most part, all you need to do is write some HTML. To contribute:

  1. Create your own fork of bjc-r.
  2. Optionally: Create a new branch for your feature.
  3. Work away!
  4. Create a pull request.
  5. Get feedback on the pull request and make changes as needed.
  6. Be super awesome! :)

Of course, submitting issues is always welcome and encouraged! These issues can be bugs, questions, improvements or anything you'd like to share.

License

CC-BY-NC-SA 4.0

CC_IMG

bjc-r's People

Contributors

aaaschmitt avatar bpierias avatar brybranmuffin avatar cycomachead avatar ddgarcia avatar emansishah avatar isaacmerritt avatar isharacomix avatar janicejkok avatar jasnowiss avatar joshhug avatar laralinmcc avatar lmock avatar maxsonyang avatar mcheung-cal avatar mehul-gandhi avatar mschwartz01 avatar niketkul avatar pancakereport avatar paulirwin12 avatar peterasujan avatar rebeccacwong avatar ryanariddle avatar smeargle1127 avatar straversi avatar vtantry avatar xtitter avatar yifatamir avatar yishuchao avatar zepixel333 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bjc-r's Issues

Vocabulary Terms

The NC PD cohort requested some common vocabulary terms for the course. Nate is also working on an authoritative BJC glossary that will be held at bjc.berkeley.edu. If we do a good job on this one, we can kill two birds with one stone.

Intro / Getting Started Guide for Working on Labs?

Is there any documentation for how to write a lab, or resources for getting started with code and building the lab site?

Most of it looks pretty straight-forward, but it would be great to have some docs to help getting started, hopefully covering things like style and conventions. This could really help as we get others involved in working on updating labs.

Move all Files to Using Relative Links?

I've been experimenting with hosting the labs from other domains / locations.

There's two issues, one easy and one more tricky.

  1. The "rootUrl" needs to be changed, but this is only two locations.
  2. The real big issue is that in many place in *.topic files, URLs start with "/bjc-r"

Would it make sense to make these URLs more relative? I wouldn't do the whole repo at once but it could be something that's done in a few chunks.

Exercise: Here's a game, how does it work?

Go over the elements that make games run, such as how the main loop is constantly polling for information related to keypresses, how the game draws a new frame at least 30 times a second, and so on.

Convert TOPIC 2 assessments from Brian's form style to the new style

(michael -- I'm assigning you to this so we don't step on eachothers toes... tell me if you don't want to tackle it)

We're basically done with topic 1, but there are three activities in topic 2 that need to be converted:

  • test yourself: total turning
  • test yourself: repeat
  • if: what would you expect

Use the layout in the two quizzes in topic 1 to help! You are going to need to convert to multiple choice, since that is currently the only kind of assessment item we have. Other types coming soon!

Journal for Reflections after labs/readings

A journal component to the course would be very helpful for helping students internalize why they would want to go into computing, while also thinking about the approaches they use to solve problems and how they change as they become more experienced.

Remove HW From CS10 Lab 3?

We probably shouldn't keep the HW specs in labs for CS10.

Is there no URL parameter?
In this case, we should probably simply start to make a new course for CS10 out of existing topic files.

Switch to a Markdown/Textile parser?

This would be a longer from project, but what do you guys think of the possibility of using a markdown processor? It could make the process of writing and updating labs much quicker in the future, and easier for others to submit and find fixes.

Leslie's Moodle Fixes

@lpkeller needs to update some lab information for her version of the course on NC State's moodle.

  • Lab 5's source code doesn't match up with the lab write-up. Either resources need to be changed, or it needs to be made explicit that the code will not match for pedagogical reasons (ie, code literacy is a learning objective)
  • "Try It" exercises need to be added to the unit on Lists.
  • Add some algorithms to the noodle

Removing YouTube videos from Fa13 CS10 Labs

The current set of labs has lecture videos embedded within each lab. Should these be removed for students who are taking the class in person?

It's not strictly necessary, but might be worth considering.

Grade Labs for NC PD Cohort

The NC teachers will be submitting their solutions to the BJC labs to @lpkeller's Moodle hosted by NC State. These need to be graded by the end of the PD session.

Don't require rootURL ('bjc-r') in .topic file links

the links in .topic files shouldn't need to start with /bjc-r/, but that should be prepended by topic.js using the 'rootURL' global.

Need to make this conditional for now, so that existing .topic file links that have the 'bjc-r' prepended don't break

Link to Main Labs List when working on a lab?

Currently, unless I'm missing something, there's no way to jump to the list of all labs for a course.

For instance, on this page (mid lab 2):
http://bjc.berkeley.edu/bjc-r/cur/programming/variables/nested-for.html?topic=berkeley_bjc/intro/loops-variables-conditionals.topic&step=11
I can jump to the main lab 2 page:
http://bjc.berkeley.edu/bjc-r/topic/topic.html?topic=berkeley_bjc/intro/loops-variables-conditionals.topic
But It would be very handy to have an easy way to jump to all labs pages, here:
http://bjc.berkeley.edu/bjc-r/course/berkeley_bjc.html

Remove add Height and Width Properties from images?

Is there any reason to have hard coded properties in /every/ /single/ tag for images? There are way too many places right now that have Snap! Images which are squished in some dimension because their properties are different from BYOB.

If no one has any objections, I think it would be good to run the following regex over the /bjc-r folder for .html files
(width|height|vspace|hspace)="\d
"\s+

On my system it finds 2,268 matches all of which are contained in <img /> so it would seem relatively safe to proceed. I'm going to test with a test branch shortly...

Update the Wiki or bjc-authors.github.io on how to contribute

We need to outline:

  • How teachers can use the resources in this repo
  • How teachers can make their own copies of the repo and host them on github.io
  • How teachers can push their changes upstream
  • How to use the issue tracker for the technical team

Adding Image Credits

We should really try to add credits to all images, if they aren't our own. (There aren't too many, but there are a few).

What would be the best place to have a consistent spot for credits?
The two options I can think of:

  • Below and image (small text, aligned on the right of the image)
  • At the bottom of the page,

Comments on the first list lab

These comments are from a TA this semester, and I think they're good things to keep in mind as we work on updating labs.

Length

This is a big one. Very few of my students got past making an acronym/finding the longest word of the sentence, which means that they are never getting to the last three pages of the lab. So the complexity and number of activities might be something that the lab team wants to reexamine. Particularly there are what I think of as points of congestion which might be altered to make the lab more viable.

Pluralizing noun phrases part of the time

One of the exercises asks the students to write a block that pluralizes a phrase half of the times you run it. This is fine, except that we have been drilling into them the definition of a function, i.e. that it always returns the same thing. Many of them are at a loss as to how to make a block sometimes return one thing and sometimes another, and things like state and random variables are foreign to them. This meant alot of time was spent on a small and conceptually pretty unimportant task. Giving them more direction for this exercise would go a long way towards clearing up one of the points of congestion

Combine (Is the first letter of the word a vowel)

So, Jon mentioned this in an email all it's own and frankly it deserved one. This was hugely hard for students to grasp and it was a big hurdle for them to get past and one that often left them much more frustrated than curious or intrigued. More than anything, the order of the "vowels" list and the "letter 1 of word" confused them, even though the block makes it explicit which input must be a list. Something needs to be done to help give learners the intuition for making the logical leap to "Oh, does this this list of vowels contain the first letter".

Some students had issues imagining the list "a, e, i, o, u" containing the first letter of a word, because obviously the word contained the letter, not the list! As in they didn't get that like, the list containing an equivalent letter was what they were looking for. This really needs to be reworded somehow

Unicode

This was a less common issue, but for the acronym finder, many students had trouble with making the connection between unicode and capital/lowercase letters. The lab just says "experiment with the unicode block", and many students seemed not to know what that meant, which stalled out a few pairs.

Setting variables

This is a small one, but students regularly did not realize for the first "noun phrase" exercise that they needed to actually like run the set blocks. They would set them up to set the variable to the right thing, but never actually run them, then express confusion when references to those variables did nothing. This might be something an extra sentence in the lab description might alleviate.

Anyway this is just what I noticed and I encourage people to chime in with things that they notice - I feel like it is useful to have this stuff sitting around for future reference.

Come up with ways to help teachers collaborate

This can be done beyond Github - teachers need to know that they are not teaching all alone. We need to help teachers come up with protocols and resources so that teachers will seek help from one another and from the technical staff on top of BJC.

Move to HTML 5 doctype

Can we switch to HTML 5 doctypes? Not too much specific need for a change now, but it's always good to try to follow standards. :)

Remove All "Console Log" Statements

We should try removing these from production.

Perhaps, we could create a simple error / debug function to use, which only runs when the base URL is "localhost"

Get with Berkeley TAs

We need to work with the Berkeley TAs by giving them access to @lpkeller's Moodle, the NC Cohort Piazza, and so on, so that our teachers can reach out to them for assistance.

Word fix in Lists 1

The lab page for "When you really have to loop"
Says this:
"Why two different ways? Well, Brian likes the empty input slot, so it works the same as map and friends, but Dan likes the variable."

We probably shouldn't refer to people specifically since it just doesn't make sense if you don't know who Brian or Dan is.

Documentation/Templates for Final Portfolio Projects

We need a clear description of what goes in the portfolio, how it will be graded, what the individual pieces must look like, etc, etc. There should also be resources on how teams should be organized, using roles, responsibilities, and so forth.

The final project must contain three components: code, data, and internet. The Data section is particularly in need of work.

Lightweight Snap! intro as a "Reference" Lab

I think we should have a reference lab, that goes over some basics of Snap!

Stuff it could cover:

  • Creating Accounts
  • Different Saving Options
  • Importing Tools and Libraries
  • Open vs Import
  • Where to find help (This should probably be added to the first lab as well).
  • Running a block (All the places you can click)

Perhaps we should add it to the first

More practice with iteration before HW1

Just completing Labs 1 - 3 is not enough prerequisite knowledge and practice to complete HW1. A large amount of students do not understand to use For loops for HW1.

Lab Solutions

Do we have a way of keeping track of lab solutions?

If not could we create a folder (or separate repo)? I'm not sure how public we want them to be? Currently all BYOB labs have publicly available solutions.

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.