Share this story
How the Cloud Changes SchoolView more stories
I can’t put my hands on the thing right now, but I’m pretty sure that the Parenting Manual I was issued when my kids were born deemphasized the importance of keeping up with changes in the way they do things as they grow up. The worksheets and hand-written essays of their younger years have changed into collaborative work done online as they “matured” into high-schoolers.
Has it changed the work? Maybe less than it first appears. Technology may change human behavior, but it doesn’t really change human nature. Most kids don’t much like doing homework, and cloud services haven’t done a lot to change that. What’s interesting is that the kids, teachers, and administrators I talked to generally like the flexibility of using cloud-based classroom tools, but none of them think it has fundamentally changed classroom life.
Why can’t we see your homework?
My two boys are sophomores at the Institute of Collaborative Education, a public New York City middle/high school with about 80 kids in each of the six grades. ICE puts most of its educational emphasis on project work; the kids have a fairly major project to complete for each class in each quarter, many of them collaborating with either a small group or with their class as a whole within a cloud environment.
One of the results is that my wife and I—who, while we for many years have not so much scrutinized every piece of homework as just tried to make sure that assignments were at least done—haven’t seen anything they’ve handed in for years. This, frankly, makes us uncomfortable. But in an age of online homework, it’s a discomfort we’ll probably have to just get over.
In separate interviews—and they really were interviews and not interrogations—the boys claimed that this is not the result of 15-year-old boys naturally hiding their business from their parents. It’s just, as Michael told me, that it’s simpler to do something on the computer, upload it to their Google Drive, and click Share with their teachers.
Jeremy, his brother, noted that Google Docs keeps track of who did what on a shared document, and when. When a grade depends in part on what group member contributed how much (and whether the group did things over time or crammed it into the last evening before the deadline), that kind of accountability is important.
But this process raises a question: what happens to the collaborative electronic work style when maybe not everyone has a computer at home?
“It’s definitely something I need to be aware of,” said Jennifer Dahlstrom, a science teacher at ICE. “I can’t require students to collaborate on a document for homework if I know there are students who won’t have reliable Wi-Fi that night.”
Out of 50 kids in her section, she said, maybe 10 percent have trouble connecting outside the classroom. “The number’s getting smaller,” she said, “because there’s functionality on the phone. Almost all of them have smartphones. At the high school level, almost 99 percent.”
Michael Rosenbaum reports that ICE, being a typically resource-constrained New York City public school, has roughly one (Windows) laptop for every two kids. So the kids share in the classroom, and more than a few bring their own computer.
Accountability and accessibility in the cloud
Bonnie Robinson is the director of curriculum, instruction, and assessment for Lebanon High School in Lebanon, New Hampshire. It’s a district that includes many kids of Dartmouth College faculty, but she said 20 percent of the students qualify for free or reduced-cost lunch. She says the digital divide isn’t much of a problem at her school. “We have Chromebooks, laptops, and desktop computers available in several locations at school,” she said. “Most have both computers and Internet access at home, but those few who do not manage to work around that challenge. All kids have smart phones, and these are used for many purposes—mostly social, but also for school work. Many students prefer to use their phones” rather than a larger device.
Robinson also said that the cloud-based classroom enforces accountability, because the students can always look up the assignment and get the resources to complete it. Tools like PowerSchool let parents track grades and completion of assignments, and ICE uses Jupitergrades for the same purpose.
With all this work getting done electronically, it would be reasonable to expect that it would allow the creation of a durable digital portfolio. That, however, seems to be a challenge yet to be surmounted. “We’re still developing digital portfolios,” said ICE’s Dalhstrom. “We haven’t found something that’s affordable that we’re happy with.” Instead, she said, kids store their work on their own Google Drive. Jeremy Rosenbaum says most of the work ultimately gets printed out anyway.
In Hancock, Robinson says that the school’s IT department disables students' accounts the August after they graduate, so they’re encouraged to download their work to their personal accounts.
As far as parental involvement goes, Dahlstrom agrees with my gut feeling. “I do have the feeling that they (parents) are not as involved,” she said. “Parents used to be able to go through their kids’ bags to see the work,” which is no longer an option.
But the ultimate question is this: the comfort and enthusiasm of parents, kids, teachers and administrators aside, does all this technology actually improve the educational result? “I think it’s a net positive,” Dalhstrom said. “Not a drastic net positive. It hasn’t changed my pedagogy. If it all disappeared, my class would still be fabulous.”
Dan Rosenbaum is a technology journalist who specializes in the intersection of technology and society.
Homework Assignment 1
Home Assignment 1
For this assignment, you will build a basic application using Amazon’s cloud services. You will become familiar with how to launch and access virtual machines using EC2, and learn how to execute code on these machines. You will learn how to use Amazon’s Simple Queue Service (SQS), as well as Amazon’s Simple Storage Service (S3).
There are several ways of doing this assignment, including a variety of languages you can use, and a variety of ways of interacting with AWS. For example, in order to interact with AWS, you can use the AWS management console, command-line tools, SOAP APIs, REST APIs, as well as libraries in other languages. However, I will only provide nice detailed instructions on how to do this assignment in one particular way (you are welcome to do it another way, but I will be unable to help you along the way if you run into issues). Specifically, I will give guidance on how to use the AWS management console to create AWS resources, and how to use the AWS SDK for Java to interact with these resources (both from within AWS, and outside of AWS).
In order to do the assignment in the way I will outline, which uses the AWS management console for various purposes, you will have to set up an AWS account. To set up an account, you will have to provide a credit card number, but this credit card will not be charged because everything we will do in this assignment falls under the “Free Usage Tier” of AWS . However, if you wish to do some of the tutorials provided by AWS, or test some of their example code, you might end up being charged.
For a great overview of some best practices for using the Amazon Web Services I reccomend this white paper.
Note! Do not make any of your AWS keys, credentials, or even keys to your S3-buckets publicly available (e.g. GitHub), or you might end up with a juicy bill.
Deadline and Deliverables
The deadline for the homework is until the next session (24/2). Before then you should hand in a zip-file containing your workspace, and the log/text-files from your S3-bucket. You hand it in by mailing the zip-file to the TA (Victor Millnert, email@example.com).
Overview of the Application Structure
The recommended structure during the development phase of this assignment is shown below. Note how the code that is later to be run on your EC2Instance is run on you local computer during this development phase (saves a lot of time). Once everything is working, this will be moved to it’s own EC2Instance.
Once all the code is working as intended the EC2Instance Code can be moved to the Amazon Cloud, and the final structure will look like the following:
For a more thorough description of the application you can read this nice article by Amazon.
A Natural Working Order
- Read the entire homework manual
- Set up an AWS Account (instructions are given below)
- Set up Eclipse (instructions are given below)
- Study some “AWS java sample code”
- Especially the “SQS”-example, “EC2SpotInstance”-example, and the “S3”-example
- Create your own S3-bucket
- You can use Java/Eclipse and/or the AWS Management Console for this
- Put a new message in the bucket
- Read a message from the bucket
- if you use java to do this, go online to the AWS Management Console to see the changes
- Create your own SQS-queue
- You can use Java/Eclipse and/or the AWS Management Console for this
- Put a message in the queue
- Read a message in the queue
- Delete a message in the queue
- Change the “VisibilityTimeout” for the queue (instructions below in the SQS-section)
- Enable “Long Polling” for the queue (instructions below in the SQS-section)
- Start developing the Client App
- Requirements are given below in the Client-App Section
- Should be running on your computer
- Start developing the EC2Instance-code
- Requirements are given below in the 2+ EC2Instance Section
- This is the code that is to be run on the EC2Instance in the AWS Cloud
- Should be running on your local computer during development
- Once everything works as intended this will be moved to a EC2Instance (the following steps)
- Export the working EC2Instance-code to a EC2Instance
- Export your working EC2Instance-code as a runnable JAR-file
- Go online to the AWS Management Console
- Initiate a new Linux micro instance
- copy your runnable JAR-file up to your newly created EC2Instance
- into your new EC2Instance
- create a directory to store your credentials in
- copy your credentials to (these credentials were created during step 3.)
- copy your credentials from to
- delete the credentials in
- Run the runnable JAR-file, and see if it works
- Make the script run on start-up
- Log into your modified EC2Instance (created in the previous step, with the runnable JAR-file)
- Open using an editor of your choice (perhaps vi)
- After the line add the following line:
- Now the JAR-file should execute on startup of the instance
- Create an AMI-image from your modified EC2Instance
- Go online to your AWS Management Console
- Go to the EC2 Dashboard
- Select your modified EC2Instance
- After a while your new AMI-image should be visible under the AMIs-menu
- Launch a new Instance from your newly created AMI-image
- Select your newly created AMI-image
- Launch one more and you have your 2+ instances :)
- Start your Client Application and do a full test of your cloud-app
- Zip your workspace (including the EC2Instance-code) and the log/text-files (10 is enough) from your S3-bucket
- Mail it to the TA (firstname.lastname@example.org)
- Terminate all the EC2instances
- Delete your SQS-queues
- Delete your S3-bucket
- Destroy your AMI-image
- Destroy your credentials
Setting up an AWS Account
- To sign up for a Free-tier AWS Account just follow the instructions on https://aws.amazon.com/free/.
- Become acustomed with the AWS Management console. They provide a useful ‘getting started tutorial’.
- Play around and create a EC2Instance, an SQS-queue, and an S3-bucket.
- It would be a good idea to into your EC2Instance, modify it a little bit and then save it as an AMI-image.
Setting up Eclipse
If you don’t like Eclipse I’m sure you can find another way..
- If you don’t have Eclipse installed you can find it here. The “EE”-version of Eclipse is recommended.
- Setup the “AWS Toolkit for Eclipse”
- Instructions are give here.
- Try out some of the “AWS java sample code”-examples.
- Specifically the “SQS” and “S3” examples
- Look at this API on how to create and run a regular EC2Instance.
- The “AWS Java sample code” only show you how to setup a EC2SpotInstance.
- Code sample on how to start a regular EC2Instance is given below, under the section (2+ EC2 Instances)
The Different Parts of the Application
The final structure of the application is shown again, for reference when describing the requirements of the different parts in some more depth.
Runs locally on your machine. Should do the following:
- User inputs a comma-separated list of numbers.
- Puts this list in the S3-bucket (and remembers the key/pointer to this object).
- Puts a message in the SQS-inbox with a key/pointer to the object in the S3-bucket, along with a process to be executed on these numbers.
- Waits until a response is generated in the SQS-outbox (should contain a pointer to a new, and processed, object in the S3-bucket along with the process executed).
- Reads the result from the S3-bucket
- Prints the results along with the original numbers and the the process that was done.
- Deletes the result-message from the SQS-outbox
The available processes should be:
Note: You need some clever way to make sure that the result in the SQS-outbox is indeed the result to your request and not the request made by a different client app (meaning it should be possible to have several client apps).
You will need one “inbox” where the requests will be put and one “outbox” for the responses.
Some notes on the SQS-queue:
- The SQS-queue is not a FIFO queue.
- To make sure that only one instance can read each message at a time you need to set up a “VisibilityTimeout” for your queue.
- To make sure that your thread waits for a new message to arrive (if the queue is empty) you need to enable “Long Polling”.
- These can both be set when creating the queue:
2+ EC2 Instances
Should be run on your local computer during the development phase, and then (once it works) moved to the Amazon Cloud. These instances read from the “inbox” queue, process the requests, put the processed object in S3 bucket, send a response message to the “outbox”-queue, and delete the message from the “inbox”-queue once they have finished processing it.
To create an EC2 Instance from a certain AMI you can do as below:
The S3 bucket will contain all of the requests/responses which the system has processed. This information should at least include: MessageID, timestamp, the three numbers, process, result (if it’s a result)
Some good info on the S3-bucket can be found here.
Note that all S3-buckets need unique names!
To create a S3-bucket the following code can be used: