Tuesday, September 19, 2017

Designing Projects for Programming Students

Last night a teacher friend of mine gave me a USB stick with the projects he uses with his students. I have projects for C++, Python, Java, and Visual Basic from him. Oh and there are 60+ in each category. It’s going to take me quite some time to go through them. It’s got me thinking about projects in general though.

Keeping students interested is important when designing and assigning projects. The projects I’ve looked at from my friend and the ones I have used myself over the years seem to mostly do that. Although knowing what students a quarter your age will find interesting can be tricky.

For me a big issue is that the more interesting a project is the more programming features and functionality it usually requires. For that reason I am moving up where in the curriculum I teach reading files this year. Projects become a lot more interesting when larger amounts of data are being processed. It also means i can get some good test data in front of students.

Determining  the level of scaffolding is another trick. The projects I am looking at show a wide range of scaffolding. And that makes sense of course. In the early projects you want some solid scaffolding to avoid too much frustration. Over time as students get more comfortable with problem solving and how things work you want less. I usually have students work on a concept with me (following my demo step by step) as one way of scaffolding.

Hinting is also an issue once a project has been assigned. I’ve written about that before - Would You Like a Hint? The more interesting the project the more willing students seem to be to figure things out on their own though.

Sources for projects are an other interesting thing to think about. Some of my favorite projects have come from student suggestions. Others from textbooks. Still more for other teachers.

BTW are you sharing cool projects with others? Blogs or conference talks are both great ways to do that. Do you know about Nifty Assignments from years of SIGCSE conferences? Many of them are for more advanced students but some will work with students still at the beginner ranks.

Other sources are informal conversations like at CSTA Chapter Meetings or other events. I’ve been on a number of advisory boards for career technical programs. Those teachers have shared lots of great project ideas over the years. The Advanced Placement readings are still another great venue for sharing project ideas.  Always look for chances to learn from other teachers.

So where do you get project ideas? What makes for a good project for you?

Monday, September 18, 2017

Congressional App Challenge Launches Today

Something that looks interesting at least in Congressional Districts where there is a sponsor. Visit the web site to check it out.


Congressional App Challenge Launches Today!

It begins today! The third annual Congressional App Challenge (CAC) has now launched and will run through November 1, 2017. The CAC is a congressional initiative to encourage student engagement in coding and computer science through local app challenges hosted by the Members of Congress. This year, there are over 165 Members of Congress signed up to participate!

The CAC aims to bridge the gender, geographic, and racial gaps in tech. In its first two years, the program yielded 239 challenges across 33 states. Over 1,150 apps were created by nearly 4,000 students, and participant demographics surpassed all industry diversity metrics, with young women representing 30% of all competitors. This year, the Congressional App Challenge will strive to build upon those numbers.

During the next 14 weeks, thousands of students in participating Congressional districts will create and submit their own original applications, that will be evaluated by panels of local judges.The Members of Congress will announce the winners during Computer Science Education Week in early December. Winners will be honored by their Member of Congress. More prizes will be announced throughout the Challenge.

The CAC was created because Congress recognizes how essential computer science and STEM skills are for economic growth and innovation, and that the U.S. is currently experiencing a dearth of adequately trained technical talent. By some estimates there are nearly a quarter of a million unfilled programming jobs in the US, right now. The CAC is a congressional effort to maintain American competitiveness, by proactively inspiring our youth and encouraging them to pursue these crucial skills.

The Challenge owes gratitude to Representatives Bob Goodlatte and Anna G. Eshoo, co-chairs of the Congressional Internet Caucus, who requested and supported the creation of the CAC. Challenge execution is supported by the efforts of our Advisory Board, which includes the American Indian Science and Engineering Society, the Computer Science Teachers Association, Girls Who Code, Hispanic Heritage Foundation, Capital One, and Cisco, as well as a broad coalition of CS-focused partners.

For more information about the Congressional App Challenge, please visit CongressionalAppChallenge.us. If you are interested getting involved or in supporting the Congressional App Challenge, please contact our Director, Rachel Decoste, at rdecoste@congressionalappchallenge.us.

Friday, September 15, 2017

Illustrating the Difference Between Bandwidth and Latency

Earlier this week my AP CS Principles classes were discussing the difference between latency and bandwidth. My curriculum resource (I’m using the curriculum from code.org) describes these two words like this:

  • Bandwidth - Transmission capacity measure by bit rate
  • Latency - Time it takes for a bit to travel from its sender to its receiver.

These are useful descriptions but how to make that real for students? Today I found two great examples of high bandwidth but low latency.

BandwidthOne was in the form of this graphic on the right. The latency is slow. It takes a lot of time for the pigeon to fly to the other site. So moving one bit or even byte at a time would not be a good idea. On the other hand since all the data gets to the destination at the same time the bandwidth is high. The story is a bit dated but still interesting.

I shared that graphic on Facebook and a friend of mine who works for Amazon Web Services pointed me to a more current story.

Amazon’s Snowmobile is Actually a Truck Hauling a Large Hard Drive

From the article:

“Using multiple semis to shuttle data around might seem like overkill. But for such massive amounts of data, hitting the open road is still the most efficient way to go. Even with a one gigabit per-second connection such as Google Fiber, uploading 100 petabytes over the internet would take more than 28 years. At an average speed of 65 mph, on the other hand, you could drive a Snowmobile from San Francisco to New York City in about 45 hours—about 4,970 gigabits per second.”

Now that is a story that speaks to moving really large amounts of data. And again, showing the difference between latency and bandwidth.

Thursday, September 14, 2017

Be a Router and Share Messages

The curriculum I am using for Advanced Placement Computer Science Principles is the excellent Code.Org curriculum. I really like the Internet Simulator that is involved in many of the early lesson in the Internet unit. It really lets students try a lot of things. I like to add a bit of my own flavor though and involving physical objects and activities is part of that. So today I had my students send messages through routers where students played that part of routers.

Here’s what I did. I semi-randomly assigned each student a two part address. The first number indicated a router and the second a student “connected” to that router. I randomly assigned a students to be routers. I selected the number of routers based on the number of students in the section. I think you need at least two routers but more would be better if the class size allows it.

imageI prepared a bunch of “message packets.” and handed a couple of them to each student who was not a router.

A list of students with their “IP addresses” was displayed on the board. I could have printed them out if I liked wasting paper but I don’t.

Students were to write out a question in the message field as well as the send to and return addresses (the codes I had created) and send the message. They were to give the message to the “router” they were connected to. The router was then responsible for either handing the message directly to the intended recipient if they were “on the same router” or pass it along to the appropriate router if not. That router was responsible for passing it to the recipient connected to them.

After a bunch of messages and replies were sent we discussed what happened. Some good things happened. Well bad things depending on how you want to look at them. I love learning moments so they were good from my point of view.

One router was overwhelmed with messages and took a while to get them all to the right place. Great! Bottleneck simulated!

Some addresses were not well written and could not be delivered. I may send some messages like that myself next time to make sure that happens. Dropped message and what that means for the learning experience!

I did this with minimal discussion first so that students didn’t know exactly what to expect. I’m hopeful this made the later discussion and the exercise with the Internet Simulator.

What do you think? Look reasonable to you? What do you do to help students understand routers and what they do?

Wednesday, September 13, 2017

NCWIT Aspirations in Computing 2018

Several of my students have applied for this award and all found it quite worthwhile.There are many benefits for students in high school and college. It’s really helpful for girls and young women to be recognized for their interests and accomplishments in technology.

Calling all 9th-12th grade women and educators, as well as college women in tech! 2018 Aspirations in Computing award applications are open: https://www.aspirations.org.

  • Earn scholarships for college
  • Find computing internships
  • Connect with a large network of other technical young women
  • Discover resources to increase your knowledge of technology

See also Top 10 Reasons to Apply for the NCWIT Award for Aspirations in Computing

Tuesday, September 12, 2017

National Briefing Call on K-12 Computer Science Education

I'm told this will be very well worth the time. I may even join with my Advanced Placement Computer Science Principles students.

We are pleased to invite you to join an important national briefing call on K-12 computer science education and the Computer Science for All (CSforAll) movement Monday, September 18 at 2:00 pm ET featuring remarks from a very special guest (please join 5 minutes early as our featured guest will be speaking at the top of the call).

We will share important updates and progress towards Computer Science for All from key national leaders; mark the one-year anniversary of the launch of the CSforAll Consortium at the White House Summit on Computer Science for All; and provide a sneak peek into the agenda and speakers at the upcoming CSforAll Summit, October 16-17 at Washington University in St. Louis.

Don’t miss this important conversation on K-12 computer science in the US and the role we all can play in achieving CSforAll. To join, add this call to your calendar using the links below.

Feel free to share this opportunity with your networks. Students and educators are especially welcome.

You can also follow along via social media using #csforall.

September 18 @ 2pm ET

Conference Line: (888) 946-4716  //  Code: 3267553#


iCalendar  •  Google Calendar  •  Outlook  •  Outlook Online  •  Yahoo! Calendar

Yet Another Example of the Importance of Good Names

A little Tuesday humor. I think I may use this to help students understand the importance of good variable names and other identifiers.


Monday, September 11, 2017

Who Wants to be the DNS Server?

We’re studying how the Internet works in my AP CS Principles course. I wanted a little exercise to help students understand how DNS servers work and maybe through in a bit about address caching.  So I came up with a little role play to try out. I think it worked ok. I’ll try it again tomorrow with some more instructions.

Here’s what I did. I started by taking screen shots of a half dozen or so web sites. The usual suspects: Google, Apple, Microsoft, Twitter, CNN, MSNBC, and the school’s home page. I printed them out and assigned students to “serve” each site. An other students was assigned to be the DNS server. I handed him a form and asked him to record which student was “serving” each web site. So the address in this case was a student name.

Another student was assigned as the user and still another was assigned to act as their computer. The computer had their own sheet for looking up addresses (student names) for each web site. As we started it was empty. This would become the address cache for the computer.

The user asked the computer for a web page. If the address was known to the computer they asked the appropriate student to display the web page. If they address was not known the computer asked the DNS server for an address.  The DNS server would return the address which the computer would record in cache and then ask the server to display the page.  We ran through several request to see how this worked.

I did this before any detailed explanation of the process. I followed the role play with a video from code.org called THE INTERNET: IP Addresses and DNS that can be found on their collection of videos. Not surprisingly, this video went into some good detail on the very things we observed in the role play. I’m hoping that the combination of the role play, the video, and in-class discussion will help with both understanding and retention of the information.

What do you think? How would you add or change this? Do you do something similar?