Vital Skills for the 21st Century

The average high school student constantly interacts with technology on a daily basis. Technology surrounds us everywhere we go, and no one knows that more than today’s adolescents. But the irony here is that they have little-to-no formal training in how computers actually work. They can practically send a snapchat with their eyes closed, but can they write a line of code or design a website? These are two of the many concepts students learn when enrolled in a computer science course.

There is a common misconception that skills taught in these courses are only useful if you want to be a computer scientist. This couldn’t be further from the truth. Sure some of the concepts may be quite specific, such as computing languages like Java, Scratch, Python, and HTML which are all commonly taught in these courses. But think about it: all industries today use computing. Computer science offers students 21st Century life skills to prepare them to be innovators, regardless of the field of work they choose to pursue. Starting these classes at an early age yields exponential benefits to a student.

The application of skills learned in computer science courses is not limited to the computer science field. Here are some highly applicable skills that all students in a computer science course will learn which will prepare them for countless opportunities in many different fields.

  1. Problem Solving: Programming is essentially a fancy word for problem solving. It requires students to consider the problem at hand and work to find the most concise solution. Problem solving skills are essential in all workplace settings whether you work as part of a team or on individual projects. They can be applied to any industry, any job, and any task.
  2. Logical reasoning is also an essential skill used in coding. It uses a series of procedures to come to a conclusion. It also places the focus on how things work in order to better understand what the outcome will be. These skills can be applied to so many real-life situations.
  3. Design: Computer Science also teaches students how to design and develop creative solutions to new problems and questions. It forces them to think outside the box as they explore various solutions.

When you think about a typical math or science requirement in high school, it’s likely that computer science does not readily come to mind. But these days skills like programming and computer science are highly sought after in the work force. Projections made by the Bureau of Labor Statistics predict a “37.5% growth from 2012 to 2022 in the computer systems design and related services industry.” That’s a large number that holds a promise of a lot of opportunities for a lot of students.

Learning computer science skills early on has infinite benefits to a student’s future. However, according to Change the Equation, “56 percent of high school seniors have no computer science courses offered at their high school.” At KT BYTE, we’re working hard to change these statistics. We offer a wide variety of computer science and fundamental courses from the most beginner level to advanced. We believe that these courses have benefits for all students regardless of what their future plans may be.

What is Coding?

Whether you like it or not, technology is everywhere these days. It’s likely that you own a smartphone and use it several times a day for a variety of reasons. In fact, according to the Pew Research Center “nearly two-thirds of Americans are now smartphone owners, and for many these devices are a key entry point to the online world.” That’s a huge number! But what all these people may not realize is that by using a smartphone, they’re actually using code written by people…everyday!

Think about a time when you’ve needed directions to a destination. It’s unlikely that you pulled out a road map while behind the wheel to check a turn. No, these days we can simply pull out our smartphones, speak to it to ask for help and – voila! – we’ve got our directions. But contrary to what many believe, smartphones cannot perform magic.

So how does this actually work? The answer is programming (also known as coding). Programming is the applied task of using a specific language to write an application. This language is then used to create an algorithm, a step-by-step set of rules that consistently solve a problem. To put it in the simpler terms, code and algorithms make it possible to create the apps, computer software, and websites that we use everyday. Without these things, our smartphones wouldn’t be able to perform the tasks we rely on them to do. We need phones to give the exact directions for the myriad of roads, destinations, and starting locations. Coding allows us to create a series of algorithms that tell the computer (in this case the phone) what the best solution is to this and countless other problems.

Let’s take a closer look at the example above. In theory, there are endless ways to get from one place to another. You can take the highway if you like to drive fast or you could cruise the back roads for a more relaxed ride. But it’s fair to say that most people want to get from A to B in the fastest way possible. Here is where the problem to be solved comes in. How can we quickly travel from here to there, taking into consideration factors like traffic, construction, detours, road work…? The list is endless. A smartphone uses “dijkstra’s algorithm” to solve this problem by allowing a computer to determine the best possible route. No paper map necessary. How did people ever survive without computer programming?

What is the USA Computing Olympiad (USACO)?

This Friday is the first 2014-2015 contest.

The contest format

The USA Computing Olympiad is an online individual competition, where the top 4 US high school students represent the United States in the International Olympiad of Informatics (IOI). Approximately 4 to 6 times per year, anybody in the world can make an account on and participate in the competition (post-high-school individuals can participate as ‘observers’). New accounts begin in the ‘bronze’ division, where the top scorers are promoted to the ‘silver’, then ‘gold’, and then finally the ‘USACO camp top 16’. Once promoted to a level, the student stays in that level. Only US high school students are permitted to enter the top 16.

The competition consists of 3 to 5 programming problems, which the individual has 3 to 5 hours to complete. Each problem is an “input output matching” problem, where the student’s program must read an input file and write an output file. Problems can be written in either C, C++, Java, Pascal, or Python, but the USACO recommends not using Python. Programs must also run within a small time frame (1 second for C,C++,and Pascal. 2 seconds for Java and Python), and programs must use limited memory.

Try a bronze problem on a piece of paper

Problem 3 of the 2014 March Contest is called “Cow Art”. Students are given an input file which contains a grid (up to 100 x 100 in size, although this example is 5 x 5):


The question asks you to print two numbers.

Part 1: Print how many different patches of R, G, or B there are. In the example, there are 4 regions:


Part 2: Print how many different patches of R, G, and B there are if you treat R and G as the same color. In the example, there are 3 regions:

Thus, the output file should be formatted as: “4 3”

Here’s the code that solves the problem:



Try a silver problem:

Problem 3 of the 2011 December Contest was called “Umbrellas for Cows”. Students were given an input file representing the positions of cows (in stalls) and the cost of various sized umbrellas. Here is a sample positions of cows:

And the umbrellas:

Size 1 umbrella: $2
Size 2 umbrella: $3
Size 3 umbrella: $4
Size 4 umbrella: $4
Size 5 umbrella: $8
Size 6 umbrella: $9
Size 7 umbrella: $15
Size 8 umbrella: $16
Size 9 umbrella: $17
Size 10 umbrella: $18
Size 11 umbrella: $19
Size 12 umbrella: $19

The goal is the decide which umbrellas to buy in order to cover all the cows for the total lowest price.

The solution, above, shows that you can cover all the cows with one size 4 umbrella, one size 1 umbrella, and one size 2 umbrella. The cost is 4 + 2 + 3 = $9.


How to create your own domain / website on Amazon ec2

Step 0: Easy Alternatives

Before you dive first into making a full blown website, make sure you have some experience:

– Writing a blog using WordPress, Blogger, etc.

– Writing HTML/CSS for a static website on your computer, such as from Codeacademy.


Step 1: Settings up a server

Create a free account on Amazon ec2, which will allow you to create a free server “micro” instance for 1 year. Creating an account requires a credit card and a phone number for activation.

From within ec2, create a new instance. For the purpose of this tutorial, we will choose Ubuntu Server 64 bit (14.04). Other versions of Ubuntu should work with this guide.



Step 2: Create a key pair.

During the ec2 instantiation process, you will be asked to create a key pair. You can pick any name, but make sure to save this file in a place where it wont be deleted. Backup this file, as it is required to access your server.



Step 3: Security Group Settings: Enable HTTP (and optionally HTTPS):

For your web server to be visible on the internet, you need to unblock port 80 (and optionally 443 for HTTPS).


Step 4: Start the new instance, and note the public DNS:

In the instances control panel, find the public DNS. This will be used to connect to the machine



Step 5: SSH into your new machine

Step 5a: MacOSX / Linux

On a mac, use the already installed ssh command from the folder where you downloaded the secret key (“KeyPairName.pem”). You will need to change the DNS in this line:

You may need to enter yes the first time to accept the public key.

Step 5b: Windows

On Windows, download putty and puttygen. Using puttygen, load the private key (.pem) from step 2. You will need to select all file types when loading, since the extension does not match ppk. Then, save the private key.


Then, in PuTTY, set the address to, and also browse for the private key in Connections->SSH->Auth:


To save these settings later, type a session name on and save. Finally, connect to the machine with “open”




You may need to enter yes the first time to accept the public key.

Step 6: Install a web server, such as Apache2 :

After SSH-ing, type and run the following commands:

Step 7: Test your new website:

Go to http://your-dns, and you should be greeted with the following page


Step 8: Download an SCP client to upload files

You can skip this step if you are comfortable with using the linux terminal to modify files. All apache2 files are located in /var/www/html

For windows, download WinSCP. For MacOSX, use cyberduck.

On both, you will login to . Additionally, you will need to specify the private key file:




You should now be able to upload files to the /var/www/html directory.

Step 9: (Optional) Install MySQL, PHP5, and phpmyadmin:

This step is useful if you with to deploy a web application that uses PHP and MySQL (such as

Please note the MySQL root password during the installation process.

Step 10: (Optional) Install WordPress

From SSH, type cd /var/www/html to navigate to the web root.

a. Download and decompress wordpress:

sudo wget wget

sudo tar -xzvf latest.tar.gz

b. Navigate to http://yourdns/phpmyadmin and login as root

Create a new database (collation) for wordpress

Create a new user, and add all permissions for the wordpress database

c. Navigate to http://yourdns/wordpress (or wherever your wordpress tar.gz was extracted)

Complete the instructions on screen by entering the login information from step b. You may be required to create a new file called wp-config.php. If so, do this from the terminal and within the wordpress directory:

sudo nano wp-config.php

#now you can paste the contents of wp-config

#now you can ctrl-x to quit (hit y to save)

d. Navigate again to http://yourdns/wordpress to complete the process

Step 11: Getting a free subdomain

To get a free subdomain, such as, you can use the service.

After creating an account, add a new subdomain:


The type of the subdomain should be “A”, and the IP destination should be the IP address of your server. To get the IP address, you can type “ping yourdns” in the terminal (cmd on windows).

CS00 and CS01 courses available for free

KTByte is proud to release its self guided CS00 and CS01 computer science classes for free to students worldwide. The online courses are interactive, self guided, and include 200 problems each. You need a desktop computer for the classes. The Java interactive textbook continues to be free as well, and it can be accessed from a mobile device.

Java is still the language used on the United States AP Computer Science exam for high school students. It is also one of few performant languages allowed on the USA Computing Olympiad. These courses are a good choice for students looking to get an early edge in CS.

KTByte will continue to use the courses as part of our middle and high school curricula. Please contact us with any inquiry.

Intro to CS with Java

Intro to CS with Java

Accelerated Intro to CS with Java

Accelerated Intro to CS with Java

KTByte Fall Registration


Facebook icon Twitter icon

Please feel free to forward this newsletter to friends and family.


Fall Registration

Fall classes begin on September 7th, with a range of classes for students of any level, age 9 – 18. Feel free to contact us at inquiry [at] ktbyte [dot] com or (818)-748-8848 with more questions.

  • All classes have assignments and projects, utilizing a hands on approach to learning a broad range of CS topics.
  • Fundamentals and Robotics classes are held in person at our 594 Marrett Rd Ste 22 location. All other classes are held via small group webconference (virtual classroom).
  • Full schedule: Some classes are still being scheduled, such as CSP and late night classes. We work hard to fit classes to students’ needs, so please contact us if you have trouble fitting into the current schedule.
  • Registration and Fees:
  • $90 registration fee waived for early registration



July 5k Completed. August 5k Competition Begins

Erik Uhlmann of Belmont MA wins the July KTByte 5k contest! His project, Emerge, is a 2-player infinite-racing 3d game. Play his game here

The next 5k is due at the end of August. Middle and High School students worldwide may enter the ktbyte 5k contests for free. First place wins $100, and you can read more here about the August Competition (page under construction).

See past competition entrants and winners on showcase. This competition is perfect for those who would like to exercise their Java and Javascript skills.



USACO Prep Class Near Full

The USACO prep class prepares students for the USA Computing Olympiad. This competition is comparable to the USA Math Olympiad, as top students represent the United States in the international competition (“IOI”). This class runs via small group webconference Monday Evenings from August 4 – August 27 at 7:30pm to 9:00pm Eastern Time. The cost is $750. Email us at inquiry [at] ktbyte [dot] com to register. More curriculum information:

  • Array O(n) problems
  • Array O(n^2) problems
  • 2-d sorting problems
  • Recursive combinatorics
  • More recursive combinatorics
  • Flood Fill
  • BFS
  • Comparable, and object sorting problems
  • Dijkstra
  • Dynamic Programming



Remaining Summer Camps and Classes

August 4 – 8: Intro to Computer Science (CS00): (13+ years old). Waitlisted

August 11 – 15: Computing Fundamentals:
(9 – 12 years old)

August 11 – 15: Robotics and Computer Vision: (requires prior java programming experience).

August 18 – 22: Computing Fundamentals:
(9 – 12 years old)

August 18 – 22: Intro to Computer Science (CS00): (13+ years old),

August 25 – 29: Android Programming:
(requires prior java programming experience)


Note that camps are held at our 2 Militia Dr. location in Lexington



LexHack on September 27th

KTByte is sponsoring the Lexington Hackathon, a one day programming event on September 27th, 2014. Find out more here. The event will be held at Lexington High School (in the Field House) from 8am to 11pm. Students will have a chance to win cool prizes and work with other programmers. No experience is required. The event is free.

Learn Java Online

Learn java for free online with our interactive java tutorial or on the go with our interactive java textbook.



How to connect Windows 8 or 8.1 to an AR-Drone 1.0

AR-Drone 1.0 uses ad-hoc wifi, which Windows 8 does not provide a graphical way to connect to. Here’s how you connect Windows 8 or 8.1 to any ad-hoc network, including the quadcopter.

Setup – Needs to be done just once

  1. Go to the “Network and Sharing Center” and click “Set up a new connection or network”
  2. Select “Manually connect to a wireless network”
  3. Enter the SSID of the ad-hoc network into the “Network name” field (you can find visible ad-hoc networks via the command prompt: “netsh wlan show networks”)
  4. Configure security settings (for the AR-Drone, select no security / none)
  5. Uncheck “Start this connection automatically” (important)
  6. Click “Next”, then “Close”
  7. Run netsh wlan set profileparameter <ssid> connectiontype=ibss   , and replace <ssid> with the SSID of your network.


  1. Run netsh wlan connect <ssid> . Replace <ssid> with the SSID of your network.


  1. The regular graphical way to connect or turn off the wifi should work. Otherwise, use netsh wlan disconnect


  1. Run netsh wlan delete profile <ssid> . Replace <ssid> with the SSID of your network.






3 coding puzzles 100% of a middle school class got, versus 50% of interviewees

Skip down to the end if you just want interview prep suggestions.

There’s a lot of debate as to whether algorithms interview questions are effective.  However, sometimes coding questions provide a good filter. In our case:

  • These questions were “CS101” level
  • We believe a good developer needs to be able to make good decisions, and good decisions rest on a deep understanding of how many complex systems interact. If a developer can’t reverse a string, how could they possibly understand the performance implications of large client facing software?

Admittedly, the middle school students in our CS02 course are quite bright (one has placed in the USA Computing Olympiad). However, after several years of interviewing for the big software companies (Microsoft, Amazon, Google) — professional developers don’t perform much better than our career counseling clients.

The questions:

1. Sum up numbers from 10 to 100 that are multiple of 3 or 5

Run this Java solution in your browser:

2. Reverse a String without using a reverse function (and only language docs)

Run this Java solution in your browser:

3. Reverse a Stack

Run this Java solution in your browser:

The problem solving steps and failures:

  1. Parse the English and do the problem by hand
    • This step was harder for kids than for adults.
    • However, if students who misread the problem were told to re-read it, kids out performed adults.
  2. Come up with a pseudo code algorithm
    • Students did somewhat better than adults on this step.
    • Shockingly, many adults did not know how to extract a character out of a string in their preferred language
  3. Convert the algorithm into code
    • Shockingly, many adults did not know how to extract a character out of a string in their preferred language (not just any language)
      • We had C++ programmers who would not know about square brackets, and C programmers who start with pointer arithmetic but fail
    • Even more shockingly, many adults could not find appropriate documentation to solve their problem when allowed to search the API docs (Java) or use a book reference.
    • Yes, some middle school students had forgotten how to use a stack or instantiate a Queue. However, all were able to look up how to do it within the appropriate time.
    • Adults who *were* able to write code often fell out of the time limits.

There is a glut in bad coders, but do not fear if you are one of them

The solution is not for job hunters to attend a “full stack bootcamp”. Instead, if you’re an adult who struggles with coding puzzles:

  1. Practice until you can quickly write small snippets without errors. There is no excuse for not being able to write a double loop in your favorite language. Find a coding quiz with examples you can read and understand in less than a minute. Do hundreds of these type of problems. (not just dozens, really!)
  2. Write a list of use cases for every “textbook” algorithm. One common mistake is to merely memorize a table of computational complexities. However, seeing examples of where, say, A* search is used goes a lot longer way than even studying the code itself.
  3. Do at least one large project that forces you to use job relevant APIs / use cases. The language often does not matter, and writing a large project on your own forces you to learn new design patterns and step away from legacy code maintenance. Coding interviews are intelligence tests, so they are rarely focused on  a specific architecture.
  4. Expose yourself to better programmers. With the huge growth in computing or CS jobs, the current solution to the market for lemons is the coding interview. However, there is a lot of other signalling that occurs. For example, knowledge of trendy topics, blogs, technologies can signal “awareness” of “important” issues. Likewise, humorous coding horror stories can signal experience and the ability to tackle new problems. Lucky, online coding communities are a dime a dozen, so the only hurdle is time and humility.

Good luck coding! Try our Java intro and CS00 tutorials.

KTByte June Newsletter

Facebook icon Twitter icon

KTByte congratulates the 5 students who made it through USACO (USA Computing Olympiad – similar to Math Olympiad), who placed in the top 300 nationwide: Leo Alcock, Eric Nie, Betsy Pu, Frank Wan, Willy Wu 


In This Issue

Biz Tech Winners | Summer Programming Contest | Summmer Calendar | Beginner Robotics Mindstorms Camps | Advanced Computer Vision Camp | Camp Sessions Detailed



Ewen Wang and Sky Li win Business and Tech Contest

Ewen Wang, a 9th grader from Belmont, and Sky Li, an 8th grader from Acton, won first ($1000 cash) and second ($500 cash) prizes respectively from KTByte’s Business and Technology Contest on June 15, 2014. KTByte, a computer academy based in Lexington, runs competitions for aspiring computer scientists in addition to their camps and classes. All participants were challenged to produce computer applications with societal benefits. Students submitted rigorous and creative projects across a variety of subjects. These included educational games, media applications, robotics, productivity apps, and more. Four finalists were selected from 20 participants. The finalist projects are at downloadable the end of this newsletter. 

In the first row from the left: Ewen Wang (1st), Sky Li (2nd), Lenny Zhou and Alex Banks. In the back row: Ben (Instructor), Luke Eriksson, Kenneth Rubenstein, Chi Bong (Instructor)

Ewen, who is a 2nd year KTByte student, impressed the audience with his project, Actions, which captures and replays computer and keyboard actions (see it in action here on youtube) . Ewen’s presentation included a demo of his program being used to automate tasks on the computer such as sending e-mails, opening programs, and changing settings, etc. For example, if you have more than a few computers at home or at work, and a specific setting needed to be changed to be the same on all of them, Ewen’s program could save more than a few hours of manual labor.

Sky, also a 2nd year KTByte student, had a project in robotics and computer vision. He built a robot that could detect objects of various colors with a webcam and move towards them. A program of his concept has the potential to be used in a wide variety of situations. It could, for example, be used in security. The program is set on a specific object of a certain color and if that object were to be moved, the program can produce an output that triggers consequential action.

Other finalists’ projects were equally impressive. Lenny Zhou, who created a website to play and recommend music, and Rubicon, a conglomerate of students Luke Eriksson, Kenneth Rubenstein and Alex Banks, who made several Android and web games.



Summer Programming Contests

July and August Middle and High School students worldwide may enter the ktbyte 5k contests for free. First place wins $100, and you can read more here about the July Competition.

See past competition entrants and winners on showcase. This competition is perfect for those who would like to exercise their Java and Javascript skills.



Summer Calendar

Calendar of our camp sessions:















1) Fundamentals (9-12)

2) CS00 Camp (13+)






USACO Prep (Adv)












1) Fundamentals (9-12)

2) CS00 Camp (13+)






1) Fundamentals (9-12)

2) CS00 Camp (13+)






1) Fundamentals (9-12)

2) CS00 Camp (13+)






1) Fundamentals (9-12)

2) CS00 Camp (13+)












1) Robotics Camp(9-12)

2) CS00 Camp (13+)






1) Robotics Camp (9-12)

2) Robotics & Computer Vision (13+)






1) Fundamentals (9-12)

2) CS00 Camp (13+)






Android (13+)







Beginner Robotics Mindstorms Camps

The beginner Lego Mindstorms robotics camp will run twice: August 4-8 and August 11 – 15. The suggested age is 9 – 13.

Students will learn basic robotics, motors, actuators, and sensors. Then, students will program their creations with an easy to use visual programming language. Register here



Advanced Computer Vision Class Near Full

Two spots remain for the Computer Vision class ( more info ). We are opening a camp with the same content from August 11 – 15.

Computer vision is the fastest growing area of computer science, as illustrated by massive investments by Google and other companies. Computer Vision is used across a wide array of applications including medical imaging, self driving cars, agriculture, security, and social networking. Register here



Camp Sessions Detailed Descriptions

Fundamentals Camp
(ages 9-12)
: This camp is designed for beginners; no programming experience
is required. Students will learn to do amazing things with their computer, from
how to modify a website to creating media content and game modding (taking
existing computer games and altering them).

CS00 Camp (ages 13+):
Students will learn to do fun projects with computer science (see showcase for
examples: The camp concludes with each
student building a final project, which they present on the last day (parents
are welcome and encouraged to be present) and compete with other students for
prizes. Because CS00 focuses on the development and project building skills of each
student on a one-on-one basis, a student can sign up for multiple weeks of CS00
and still learn something different each time!

USACO Prep Camp
: Camp applicants should intend to compete in the USACO
(USA Computing Olympiad – similar to Math or Physics Olympiad).

Robotics Camp (ages 9-12):
This camp is designed for beginners; no programming experience is required.
Students will learn to use Lego Mindstorms to build robotic arms, battle bots,
and other robotic toys. They will learn mechanical concepts such as gears,
pulleys and levers, which are essential to mechanical engineering.

Robotics and Computer Vision Camp (13+): This camp is
designed for students with prior programming experience. Students will program
quadcopters (remote helicopter) as well as learn C level programming (programming
language called C). Computer vision is currently the fastest growing branch of
computer science, as illustrated by Google’s focus on the self-driving car,
Google Glass and development of virtual reality technology.

Android Programming
Camp (13+)
: This camp is designed for students with prior programming
experience. Students will learn how to program and create Android apps for
tablets and smartphones. Students will use both Processing IDE (computer
program for development) and the Eclipse Android SDK (computer software
development kit).



Rubicon Group Project

Download the Rubicon project zip for Processing, which includes games made by Alex, Luke, and Kenneth for the Business and Technology Contest.

Learn Java Online

Learn java for free online with our interactive java tutorial or on the go with our interactive java textbook.


Actions by Ewen
Moving to Objects Robot by Sky
AudioDroid by Lenny


Mergesort for Processing and Processing.js

Since Processing.js does not support Java’s Arrays.sort or Collections.sort, I recommend writing your own sort. Here’s an example mergesort: