With a presidential edict to develop, recruit, and retain 100,000 excellent STEM teachers over the next decade, there is a significant push to develop more students with strong backgrounds in science, technology, engineering and math. Using hands-on projects can help get students interested in these topics, and show them that computer science is not that hard. (To download these printables, use Adobe.)
Project 1: Programming with Java
Programming is the heart and soul of computing and the sooner students are introduced to programming languages the easier it is to master the concepts. This project takes a simple idea - let a user input three numbers and have the program tell the user which number is the largest - to launch into programming theories. The lesson covers important concepts like Object Oriented Programming and language syntax.
Basic Theory of Java
Java is an Object Oriented Programming language (OOP) code which means it is modular, letting you use and reuse small bits of coding as needed in any program. One way for students to gain a better understanding of OOP is by observing everyday objects around them since these objects, like objects in computer programming, have a state and a behavior. For example, their phone has a state (on, off) and a behavior (ringing, charging) as does their dog. A dog's state could be breed, name or color and its behavior may be barking, growling or running.
This lesson helps students understand how classes are utilized in Java programming. A student can think of a class as a blueprint for an object. To help them grasp this idea have them read Oracle's explanation of the class Bicycle. Teachers should explain to a student that when creating a class for the integer assignment, syntax matters.
- Its state -- called variables -- always use lowercase names.
- A behavior -- called a method -- the name should be descriptive and begin with a verb. For example, waggingTail.
For advanced students, you can use the lesson as is. However, for other students the goal should not be about writing a working program, but rather it can be a way to remove the stigma of difficulty associated with programming concepts. Since the main idea you want all students to walk away with is how to problem solve, have them write out the program with paper and pencil. By having a student use paper and pencil to write the program, the student is forced to reduce the goal (find the largest number) into its various steps.
The best way to learn coding is to code. Fortunately, the Web is filled with hands-on options to develop your coding skills. Three excellent places to start are:
- Oracle Java Tutorials: Pick a 'trail' and learn concepts associated with that subject. Site is filled with hands-on lessons and working examples of code to help student master concepts.
- TutorialPoints: This introduction course from Massachusetts Institute of Technology is aimed at college-level students, and is an excellent option for advanced level high school students.
Project 2: Build an App
Although this project is still programming, it has removed one of the obstacles new students often dislike -- learning syntax. The student will not look at any programming language, instead they place pieces of a 'puzzle' together to build their application while the code is written in the background. The site is part of a movement encouraging students to code one hour a day.
This lesson is an excellent starting point for many first year high school programmers, especially ones who are intimidated by -- or bored with -- writing code. The site has excellent video and written instructions, and although the program is designed to work with a person's Android smartphone, an online simulator works perfectly well for students without an Android phone. By creating a working phone app, the student will become familiar with the modular concept of programming.
Since coding is written behind the scenes, this project explores the concept that programming is about reducing a task to its smallest possible part. In this assignment, students place various modules in their workspace, create string variables (by adding text to some of the commands), and complete the application by snapping together the various pieces.
Once a student masters the beginner apps and is comfortable with the workspace, try any one of the next level apps by turning TalkToMe into a Magic 8 Ball or BallBounce into a Mini Golf game. Once these apps are created the student should have a better understanding of the programming concept of responding to an event.
Your student can further expand their understanding of programming concepts by building apps or games on any of these sites:
- Tynker: This site is geared to children of all ages and skill levels and tries to incorporate the love of programming through various game-based methods.
- TouchDevelop: This Microsoft site, also part of the Hour of Code movement, using Cloud-based technology to enable users to create apps on iPad, iPhone, Android, PC, Mac and Windows Phones.
Additional Self-Directed Projects
If you are looking for additional interactive projects, at
- Live Code - At Live Code, students can build their own video game.
- Codecademy is an excellent choice for a more self-directed approach -- especially for students wanting to learn Python.
- Java Programming for High School Students by Mark Heidenry or Head First Java by Kathy Sierra are both excellent books for students looking to learn Java.
- Alice is a program designed to simplify programming concepts. The Alice Challenge has kids making their own games, animations and more.
- For advanced student, Coursera offers nearly 100 free self-directed computer science courses.
While these projects deal with software, there are some excellent DIY projects for hardware that can be found online.
- Ohio State University Department of Electrical and Computer Engineering offers several projects on their site as part of their outreach department.
- Make magazine, with its enthusiast site where users and editors provide projects, has several that should interest high school students. Students can create a GPS tag for their pet cat, and monitor where their feline friend goes during the day, or build a wireless ergonomically-correct mouse for their computer.
The Importance of Computer Engineering
With an emphasis on STEM education and getting kids to code an hour a day, computer engineering is going to rapidly become a skill that everyone has. Fortunately, by building apps, coding games and other fun projects, learning computer engineering is no longer a daunting task.