Entries in Python (7)

Saturday
Mar292014

Making programming interesting for everyone

Colleges are seeing a growing number of non-majors choosing to try introductory programming and computer science courses. And the good news is that some of the students get excited by what they find and choose to continue on to a second course. Professor Ran Libeskind-Hadas of Harvey Mudd College on sabbatical at MIT writes about this trend in a blog post titled “Computer Science for Non-Majors”.

The professor points out that college students are recognizing two important facts. One is that “every well educated citizen should understand something about the computationally-pervasive world in which we live”. And the second is a point that we have been stressing: computing and programming skills are useful across all disciplines including the arts, sciences, and humanities.

The biggest challenge is the question of what should be taught to these students? The traditional method of teaching computer science will turn most of them off of the subject (I speak from experience in many of my undergraduate classes). Instead we must examine what will make the subject interesting and useful to them. Analyzing the efficiencies of various sort algorithms or network packet routing will put everyone to sleep, including many of the true CS-majors.

Every well educated citizen should understand something about the computationally-pervasive world in which we live.  - Professor Ran Libeskind-Hadas of Harvey Mudd College on sabbatical at MIT

Professor Libeskind-Hadas proposes using these “ingredients” to make a course successful. And they sound awfully familiar to us at Start Code.

  • Demystify programming. Show that this isn’t magic and that most anyone can do it. A complex program is simply a set of smaller steps that are built on top of one another. 
  • Use higher level programming languages without a lot of rules and detailed requirements so students can focus on logic and problem solving. It's not fun to search for a missing semi-colon or matching brace on your first day. Python is a wonderful starting language for this reason. Our middle and high-school students try Python on their first day and run their first Python program. 
  • Allow students to make something they actually want to use. I know this might sound obvious but computer science has historically never been taught this way. At Start Code we specifically choose tools that give the students a chance to use their creativity on day one. Once the kids realize that they can change things and make what they want, look out! 
  • Discuss big ideas in computing to spark interest in various aspects of the field. We never know what the students will ask and we enjoy where the conversations often go. We discuss networking and the internet, hardware, bitcoins, hacking, privacy, safe computing, and more. 

We can say definitively that these four guidelines do work because we have been following them for two years and the results speak for themselves. Our elementary, middle, and high school students are excited and motivated to come back week after week. Some students have been attending our classes for well over a year and they will have a big advantage when they reach college and beyond. We are lucky to live in a time where we have a choice of introductory programming tools to teach classes this way.

 

Thursday
Sep192013

Robotics lab sneak peek

Update 12/5/13:  Our robotics lab is currently on hold.  We had a great first session and have posted photos and video to our Facebook page.  However our instructor has moved across the country for a wonderful job opportunity.  We wish Curt the best of luck.  Look for a new Arduino lab coming in the spring! - Scott

The parts are arriving daily for our next Robotics Lab!  We are just so excited that we had to share a few photos and a fun video.

Here is the main board or the "central brain" of the robotics kit.  This is what the kids connect to and program (notice the mini-usb port on the board).  Don't let the size fool you.  This thing is powerful!

Here is the chassis that we use to make it mobile.  The robot drives autonomously based on the programming done by the student.

And finally, here is our robotics instructor, Curt Hartung, showing off the OLED board.  This is one of the coolest parts of the kit.  This screen makes the kit unique and customizable for so many different uses.  (Don't let all the wires scare you.  This is a happy mad scientist test lab.)

With these components and others our robotics kit is customizable and can be expanded based on whatever the students might think of.  We can't wait to hear their ideas for Lab 2 when they get their hands on the kits.  With the power of the C programming language and a Python interpreter on the board there is room for a lot of creativity and expansion.

You can see details about the Robotics Lab here.

Tuesday
Jun252013

Summertime Rolls

Summer is in full swing with our programming summer camps underway.  Two groups of students have finished camp so far and we have seen many creative and fun projects programmed in Scratch, Python, and Java.  Some students chose to present projects at the end of the week to their fellow campers and parents while other students competed in teams in the Greenfoot Java programming competition.  Some do both!  The project presentations and the competition have been a big hit with everyone to close the week. 

Students working hard on final projects. Deadline approaching!

Scratch project themes have included pokémon, space battles, robot duels, pac-man meets slender, music, dragonball-Z and more.  We have also had great ideas for Python projects including a Go Fish card game and Blackjack.  It was really fun to help the students with their ideas and discuss the program flowcharts and algorithms.  Those aces in Blackjack are painful but we finally got it.

Web programming (HTML5 and CSS) breakout session.

In addition to our Scratch, Python, and Java tracks we hold several optional HTML and CSS breakout sessions during the afternoons.  Students created their own dynamic web pages and even embedded their Scratch projects to be played live on the page.   The instructor showed the students how to create GitHubaccounts to begin building their own ‘programming resume’ and sharing code.  Some students teamed up for the final Java competition using GitHub.  No fair!

Thanks to everyone who attended our first summer camps.  As you can see from the photos, the facilities at Academe of the Oaks are fantastic.  We are thrilled to have the camps there and look forward to many more.  See you next year!  Or better yet, see you in our year-round programs.

Happy campers.

Friday
May312013

Visit to software development studio

Our Starter Labs continue through the summer and the students kicked off their summer in style by visiting CCP Games development studio and U.S. headquarters. (One student’s parent works for CCP Games.  Thanks, Alison!).  Two of our favorite developers who have visited Start Code before, Curt and Joel of CCP, gave a tour of their office and showed the kids a behind the scenes peak at their upcoming MMO or massively multiplayer online game.  CCP is known internationally for their massively multiplayer game, EVE Online, and their U.S. headquarters is in Atlanta.

Joel led the students from floor to floor describing the various teams working on the game.  He also explained some of process involved in programming as a team versus as an individual.  The students saw many roles in the software development cycle including programmers, artists, designers, architects, team leads, and producers.  It was exciting to see the teams hard at work.


Curt showed some of the software development tools that were being used to make the game.  Some members of the team are creating the tools used to make the game while others use the tools at the same time.  The kids thought this was fascinating and had many questions that both Curt and Joel patiently answered.  We saw the developer “superman mode” that exists for testing where they could fly around the world but the students were disappointed to discover that this would be compiled out of the final version of the game.  No cheating!  We also saw Python code used to support the game and Curt made changes to the code while we watched.

Thank you to everyone at CCP for being such gracious hosts!  It is our hope that this visit was inspiring to the students and will help them see a future for themselves in technology beyond the classroom.  Whether their future lies in programming, design, art, architecture, project management, or any of the roles we saw there are a lot of opportunities for these kids if they work hard and harness their imagination.

Plus we went for frozen yogurt after the tour so what's not to like?
Thursday
Jan312013

More beginning programmers try Python

We are big fans of the Python programming language and use it as a starting point for our students.  They try Python on their first day alongside Scratch!  We decided to use Python after extensive research and it looks like more people are coming to the same conclusion.  Python is the language whose popularity has grown the fastest over the last five-years according to the recently published Popularity of Programming Language index.  The PYPL index analyzes how often programming language tutorials are searched on Google.  Python came out on top over five years as well as being the second most popular in the US.  Check out the five-year graph!

Python has a readability that new programmers can “get” pretty quickly.  Here is a great example from a side-by-side comparison of Python & Java.  Which do you more easily understand?

Java
Public class HelloWorld
{
      public static void main (String[] args)
      {
               System.out.println(“Hello, world!”);
      }
}

 

Python
print(“Hello, world!”)

With Python we can also avoid unnecessarily confusing the students with Object Oriented Programming (OOP) concepts.  There is plenty of time for OOP later when we show them Java (in the wonderful Greenfoot environment).  But to start it is more important to see code that runs more logically top to bottom. Then we can add things like while loops and functions so they can see the code begin to jump around.  This way the students will focus on problems and solutions instead of architecture, as noted in the James Hague blog entry below. (Yes, we know Python is an object-oriented language but we can avoid the OO features and instead stay procedural.)

The bottom line is that we want our students to be able to change the code.  We want them to get their hands dirty, try things, and make mistakes.  There is a greater chance that they will enjoy programming while learning the material.  Looking at the code examples above, would you be comfortable changing any of the Java code?  We have nothing against Java and love Greenfoot.  We just don’t throw them in the deep end of the pool with Java until they have some hands-on time with Python to develop more confidence and experience.