Closing Thoughts on Code Camp

Daniel Huang

 

Logo         Well we finally made it. The end of Code Camp. What started as a hobby for me three months ago has become so much more. What I think was successful about Code Camp: students learned to collaborate, students became more fearless of mistakes, and students left the camp more excited about programming than when they came to camp. While I would consider this experience as a success, I’m my own worst critic so here’s what I thought of everything.

 

 

Challenging all students

Coding is an interesting subject to teach- you could have all students come in at the same skill level, but it’s a subject that’s so heavily dependent on critical thinking skills that once you teach the basics, the variety in skill level become enormous. I knew this was going to be a challenge when I started Code Camp and while I was partially successful, I knew some people were dropping because they felt that the material was too easy for them, but on the other hand, other people were dropping because they didn’t understand the material (we had a total of around 5 people drop).

One of the reasons why I chose C++ and HTML/CSS for this camp was because of their relatively simple syntax. Students shouldn’t get too caught up into trying to memorize long lines of code in order to accomplish something, and thus allowing me to focus more on the problem solving aspect of coding. Compared to my experience teaching Java, this strategy seemed to have worked, however there was still a learning curve for some students that became frustrating for them.

While the smaller discussion sections helped students 1immensely in terms of understanding the syntax of these programming languages, I thought that this was still taking up too much time compared to the true essence of coding: understanding how to solve a problem. Thus, it was very difficult for me to provide problems that challenged all students as for some students it would either be too easy or too hard.

Moving forward, I’d like to provide more practice for students to help them memorize syntax. I want to try experimenting using flashcards to memorize key terms, and providing more optional projects that are simple but really allow students to get use to the syntax. I would also like to make everybody sign up for a personal meeting with me to try to work out what they didn’t understand which will hopefully encourage more people to be fearless about asking for help.

 

Learning behaviors

One of my goals for this camp was to motivate students to learn on their own. I provided as many resources as I could in hopes that they will use at least some of them. This didn’t quite work out the way I intended to. I noticed that most students didn’t do a lot of the practice problems that we provide them nor did they thoroughly look at the packets that we wrote for them. After some thought, I realized we may have provided too much personalized help- in other words, we answered too many questions. At first this sounds strange, isn’t this what you’re suppose to do as a teacher? This assumption is only partially correct. The true job of a teacher is to show students how to find the answer, not to just give them the answer.

 

To improve upon this, I want to place a larger emphasis on students that we care more about their ability to teach themselves than to know the right answer. This would mean telling them how to find the right answer and only ask teachers as a last resort. This would also involve showing them more resources and how to use those resources. At the end of the day, if all we are doing is telling them the right answers and they forget them by the end of the camp, then we’ve wasted their time and we’ve wasted our time.

 

In Conclusion…
This camp has definitely motivated me to improve my own teaching strategies as well as placing a larger emphasis on self-discovery and inspiration. While there are still things to improve upon, I still think of this camp as a success under John Wooden’s definition: “Success is peace of mind which is a direct result of self-satisfaction in knowing you did your best to become the best you are capable of becoming.”As we go onto holding more classes, I aim to make the learning experience for our students more challenging, empowering, and above all, inspiring.

All About Hackathons and Where to Find Them

Smitha Nagar

If someone were to ask me, “What is the best place to learn coding while having an insane amount of fun?”, I’d say one word: hackathons. Hackathons are an amazing source of knowledge – they usually focus on a competition, but they also have many different workshops on various topics taught by professionals. These workshops are pure gold for learning more about computer science. You can experiment with cool hardware and learn a new programming language, and also learn about business, public speaking, and all those other areas that help make you a well-rounded coder. They’re also a great way to meet new people to network and make those important connections that will come in handy later on in your career. The atmosphere is buzzing with energy (from the coffee and junk food), the people are friendly and excited (also from the coffee and junk food), and overall it’s such an enjoyable experience that you’ll find yourself wishing it would never end.

So what exactly happens at hackathons? Many people get images of someone endlessly staring at a computer screen, typing away, and that definitely does happen. However, it usually happens in groups – hackathons are designed to encourage collaboration. The best ideas are from teams, because two heads (or three, or more) really are better than one. Don’t worry if you don’t know anyone else who’s going or have nobody to team up with! You’ll make plenty of friends during this time, and your Facebook will explode with friend requests. Plus, many hackathons have specific sessions where individuals can meet and bond with other attendees to form groups.

The atmosphere is my favorite thing about these hackathons. Everyone is there for the same reasons as you: coding, learning, and having fun. People are energetic, friendly, and there are usually plenty of events happening on the side that add to the excitement, such as dance competitions, midnight snacks, and board games. Of course, the energy dies down a little after 1:00 or 2:00 am when people focus on their projects (and the procrastinators begin theirs), and the dancing is replaced with intellectual conversation and punctuated by the cries of those who have been debugging for four hours. But the satisfaction in seeing your team’s app work after long hours of coding is priceless. Even if it doesn’t work, knowing that you got so far creating something you wouldn’t have been able to do on your own is definitely worth it.

Team presentations are usually held in the morning of the last day of the hackathon. This is your chance to show the judges what you and your teammates have created and earn the chance to win some amazing prizes! What prizes you can win usually depends on the sponsors or partners of whoever is hosting the hackathon, and they can range from a $20 gift card to a raspberry pi to scholarships worth thousands of dollars! Far more valuable than any of these gifts, however, is the experience you get to take home with you. Some of these memories will last a lifetime.

So, you have your mind set on going to a hackathon! Great! Now you need to find and register for one. There are many open hackathons out there, but just remember to keep in mind the age group each one is geared towards. Some hackathons are geared towards young students (check out HSHacks!) while others are geared towards older programmers and are more adult-themed. Make sure you check that the hackathon you are about to sign up for is suited for you. Once you’ve signed up, remember to keep your ticket with you and bring whatever else is required on the day of registration. Once you’ve done that, you’re all set! Remember to stay safe, have fun, and code like you’ve never before!

working-people-1

Important Skills Every Programmer MUST Have!

Smitha Nagar

At Code Camp, you’re learning all the hard skills you need to become a great programmer. The desire to think, the willingness to learn, and the ability to code are all important ingredients for cooking up your recipe of personal fulfillment. However, there’s always a way to become a better programmer, and it’s important to keep in mind that programmers need to master soft skills as well. Here are some (but not all) essential skills you should try to develop to help you succeed in your computer science career.

  1. Interpersonal skills

Programming isn’t just coding alone in a dark room! Being able to work in a team is one of the most important skills you can have in any job, and computer science is no exception. You’ll always be part of or have a team, and teamwork is essential to making awesome programs and, of course, deadlines. When people work together, they can extract the best aspects of individual ideas to create the best possible program, so make a conscious effort to improve those communication skills.

  1. Presentation skills

1

So you’ve finished your project. Now what? Being able to talk to others about what you’ve done is as important as being able to do something. You may be thinking this sounds rather similar to Skill #1, but there is a fine line between the two: interpersonal skills are used more when doing a school project with classmates. Presentation skills are for giving a speech to the class. You’ll need Skill #2 to talk to investors, fellow employees, or your target audience.

  1. Patience

One word: debugging.

  1. Attention to detail

2

This involves more than just spotting syntax errors in your program. It’s the final touches that bring a project together, and being able to handle your work with finesse will improve it ten-fold. This can be anything from using CSS to make your end result look more visually appealing, to reading into your client’s expression and pinpointing what they’re looking for, to sitting back, closing your eyes, and going over what exactly you feel you need to make your project how you envisioned it to be.

  1. But seriously, Patience

Half of your time as a programmer will probably be spent debugging, and this can get rather stressful and frustrating sometimes. It’s important to be able to take a step back, see the “grand picture” that you’re working towards, and calm yourself down. This will not only help your own health and wellbeing, but will also help you find the source of the bug much faster and get you back to happily coding away in no time.

3

Overall, the main takeaway from this is that your coding ability is a significant, but not the only, factor for developing your potential as a programmer. These other skills that many people often don’t associate with computer scientists are often what make a good programmer great.

How to Think Like a Computer Scientist

Smitha Nagar

Now, I know what you’re thinking. “How can you possibly tell me how to think like a computer scientist?” The whole point of thinking is to come up with your own, original thoughts. And you’re right. I can’t tell you how to think, and I definitely do not want to – people come up with unique ideas because of their individual thought processes. What I can do is explain methods to help you see important connections that you previously could not see.

 

Coding is all about problem solving, and sadly, as I’m sure you all know (I certainly do), the solution is rarely easy to find.  You’re often required to find that one algorithm that never occurred to you right away. I personally don’t like the phrase “think outside the box,” because it has been overused by teachers, professors, employers, and everyone in between. You can’t think outside the box, because that implies that your mind is a box: closed off from its surroundings and unchanging. This is far from the truth, because your mind is constantly adapting to your experiences and environment. Instead, think of your mind as a book filled with pages of connect-the-dots, except the dots aren’t numbered – they’re unlabeled and floating free, and it’s your job to decide how you want to connect the dots. The easy way would be to just connect dots that are next to each other, and end up drawing a snaked line, but this probably isn’t the end picture you’re looking for.

So how do you figure out which dots to connect? How do you find that algorithm that results in the big picture? Here are three simple tips:

  1. Find out what you’re trying to draw.

What exactly are you trying to do? What is the answer you’re trying to find? Too many times enthusiastic coders start right away without thinking about what the end result should be, and they end up coding something slightly (or drastically) different from what they had originally intended to code.

  1. Focus on drawing one line at a time.

Break up the problem into smaller parts that you can think about without getting scared and bursting into tears. (Ok, maybe you won’t do this regardless, but it’s still helpful.) Once you have it all divvied up, it’ll be much easier for you to think about each of the pieces and solve them individually.

  1. Don’t start in the middle of all the dots.

Try to start at one end of the problem, whether that’s the very last or first part. If you can figure out the pattern when there’s only one argument, you can probably build on that to figure it out when there are two.

“Ok, ok,” you’re probably thinking. “But seriously, how do I think like a computer scientist?” You already are! You’re fully equipped with your enthusiasm to code and your book of connect-the-dots. Now all you need to do is apply those three tips and you’ll be solving problems like a pro. Try thinking about those three methods when you look at this puzzle. Can you think through the problem like a computer scientist?

problem

Why Code Camp

Logo

Daniel Huang

This is a question that I’ve been getting a lot from parents, students, and my peers. Some people think I’m doing this for profit, some think I’m doing this for fun, some just really don’t care and think it’s cool that I’m doing this in the first place.Well for me, the real motivation behind Code Camp is more complex than any single reason, but ultimately it stems from one simple goal of mine: to inspire this generation of students to think beyond what is presented to them. To know how I came to this goal, I’d really need to go back to when I was in high school and -to be honest- wasn’t a great student.

Before the Camp

I went to a very competitive high school and I got all of the good and bad experiences that comes with such an intense environment. But even before high school, I was constantly told that there was only a single pathway to success: get good grades, get good test scores, do amazing extracurriculars, all to get into a good college which will in turn get you a good job, and once you’ve got a good job, congratulations, you’ve achieved success.  For the longest time, this was all my friends and I knew, as it was drilled into us by our Asian American parents and reinforced further by the pressure that we placed on ourselves.

When I entered high school, I was already so convinced that this was the only way to do well in life that I set out to be the perfect person that I could never be. Whenever there was an available AP class- I took it. Whenever there was a new club I could join- I participated in it. Whenever there was an opportunity to do track- I did it. Whenever there was an opportunity to showcase my musical abilities- I took it. I thought that by merely seizing all of these opportunities, my future college application would look amazing, but in the end it came out to be only slightly above mediocre (at least in my opinion). I became a jack of all trades but a master of none. Despite my mediocrity in everything, I was still blessed to be accepted into a fairly prestigious college.

To this day, I don’t regret anything that I did in high school, even if it meant I was going to be only mediocre in everything that I did. Although, what did being a jack of all trades but a master of none teach me? Well it gave me a unique perspective on how our education system is flawed. While I do acknowledge that going through our education system has made me the person I am -and I will always be grateful for that-, being a musician, athlete, leader, teacher, and student all at the same time made me realize a couple of things: 1) school wasn’t teaching us, it was only telling us, 2) creativity is killed in school, and 3) people were afraid of defying their preconceived notion of success. These observations/realizations made me realized how I have personally been affected by these things and ultimately motivated me to want to correct these flaws. Hence, I started Code Camp.

Education 3.0- Code Camp

One of the observations made in Manifesto 15 is that 1.0 schools are teaching 3.0 kids. What does this mean? Our education system stems from the 18th century that aimed to “create loyal, productive factory workers and bureaucrats” (Manifesto 15). As a current participant of our education system, I can say that as students we’re being told what we should know but never to question what is possible know. Furthermore, I often see that when teachers ask students questions, only the correct responses are rewarded. From my personal experiences, this intimidates kids and creates a fear of being incorrect and failing. Thus I wanted to make Code Camp a place where students aren’t afraid of failing and inspires them to take risks and be creative.
My Motivation
With programs such as Siri, Cortana, and Watson, machines-learning already exist today, so what is going to make us (humans) different? I firmly believe that it is creativity derived from human intuition. What might this be? Well, I say this specifically because, programs today can actually come up with creative solutions to problems that result as a product of machine learning, but programs -no matter how advanced- cannot have creativity that is the result of our intuition of culture, human nature, and history.

With that said, I don’t want to see a role reversal between humans and machines: from programmers to the programmed. While schools do a great job of imparting information on us, I see schools lacking in cultivating this kind of creativity so this is what I want to inspire in Code Camp. I want to show students that taking a million AP courses won’t make them a better student. I want to shatter what they think is commonly accepted as the only pathway to success. I want students to explore beyond what is shown to them in school. Thus, inspiring and contributing to the next generation of human programmers to think beyond what is presented to them is my greatest motivation for starting Code Camp.