Thursday 31 July 2014

CSSI Day 4: JavaScript Fun (and Frustration)

As we continued into day two of JavaScript, the days are getting longer and the nights shorter... Today, we mainly spent the day working on a series of projects to gain some more experience. Some of the projects included creating a Mad Libs game, a tic-tac-toe game, a reaction timer game (similar to this one), and a spinning 3D cube. As soon as we got to class, we began working at our own pace, attempting to write the JavaScript code from scratch. However, since we had a crash course on it yesterday, I ended up looking back at a lot of past code for references. 

I began with the Mad Libs game, because it was a good way to review creating forms in JavaScript, which we'd learned yesterday. Surprisingly though, it took almost half the morning to complete the project, for while the concept was easy it took a lot of time to implement functions such as a "Play Again" button.
Sample JavaScript code for Mad Libs game.
Mad Libs input screen
Example story revealed!
Along with a functional "Play Again" button.
Next, I moved on to the "reaction timer" project. This one was even more complex than the Mad Libs, because it involved animations and getting time from the current time at different intervals (i.e. when the image appeared on the screen and when the user clicked). Once again, the concept seemed easy enough, but the actual execution was more convoluted than imagined. I wanted to add interesting features that would make the game more interactive, such as an error message when the user clicked before the image appeared, as well as a "Clear History" button that would clear the list of past reaction times; these additions made the program harder to code. While I didn't have the time to make the webpage look nice, I managed to make the functions work well doing exactly what I wanted.

JavaScript code from reaction timer.

Reaction timer put to the test!
Finally, after getting back to the dorms, I started on the tic-tac-toe program. This one was one of the hardest ones and the code got complicated very fast; in the end, I managed to work out the two-player gameplay process of putting down pieces, but I still need to code the program to determine after each step whether or not a player has won. Today was very frustrating at times, especially during many attempts to debug my programs, but it was a real experience on how "addictive" coding can get when you just don't want to stop until you've solved a problem or finished a project. By the end of the day, I felt good in what I managed to accomplish and vowed to continue working at what I've still yet to finish. Tomorrow we begin Python, which I've actually self-learned quite a bit of, so I'm looking forward to putting those skills to the test and progressing even further.  

Tuesday 29 July 2014

CSSI Day 3: Web Development with JavaScript

View of Lake Washington from the morning shuttle!
You can see Mount Rainier from the background.
This morning began feeling even earlier than the first, but we all piled onto the shuttle on-time for our second day of programming at the Google office. Once again, we started off the day with breakfast at the Sudo Cafe. Then, we began the lesson on JavaScript, which is a more advanced programming language used in web development, for creating dynamic, interactive content on websites. In fact, we learned that Google Maps is one of the most complex applications that is coded using JavaScript, due to its three-dimensional rotations (e.g. Street View) and many other features.

Although I had no previous experience with JavaScript, I found that learning some Python through Codecademy really helped me with my understanding; JavaScript is more syntax-heavy at times, but its basic structures are quite similar. We learned a lot about how to respond to different user interactions such as clicking buttons or hovering over text or images, with actions including animations and colour change, etc.

After working with Google Chrome's own built-in JavaScript console, we used jQuery (which simplifies JavaScript implementation into HTML) to add JavaScript into webpages. Through this, we were able to combine the HTML and CSS that we learned yesterday with the more complex and interactive elements we learned today.   

In between all the excitement of the day, I got to try on Google Glass! It was really cool; the screen in the corner was a lot bigger than I expected, and I got to look through all the different verbal commands that Glass could execute.


I'm also getting a lot more used to the MacBooks that we're using; while I'm a Windows user at heart (are the "control", "option", and "command" buttons really all necessary?), the Macs are very sleek and fast, not to mention the amazing graphics.

Our final project of the day for JavaScript was to create a Photo Search Engine, which takes in a keyword and searches through Flickr for relevant photos. The best part was that the search engine used real-time data from Flickr, meaning that searches could be updated based on user uploads to Flickr. There were many features that we wanted to add and we encountered quite a few complicated bugs, but in the end we managed to work them out together. Tomorrow we're continuing to work on more complex projects with JavaScript, which I'm glad for because it means involving more hands-on coding. 

Monday 28 July 2014

CSSI Day 2: Google Kirkland!

Today, we got up early to take a shuttle bus to Google Kirkland, where we will be staying and having classes for the week. As soon as we got there, it was breakfast time, where we got our first taste of food at the Google offices! We went to Sudo Cafe, one of the two cafes on the campus; unsurprisingly, the food was fantastic; we were all fueled and ready for the day. But first, pictures were necessary around the offices. 


We got a tour around the buildings before classes began; the really great thing about the offices is that they encourage collaboration through having many open spaces to work, along with offices where you are always working in close proximity to others. Furthermore, there are so many facilities available to employees, including a fitness centre, massage rooms, treadmill desks, and even a rock climbing wall! Not to mention countless micro-kitchens and cafes, always in sight. Even the interior decorations were so creative; the buildings have certain themes for naming the rooms on every floor, including crayon colours and a Game of Thrones conference room! We all felt awestruck throughout the tour.
Every building had a Google Maps pin
in front of it!
Rock climbing wall! Open at all times to
all employees.

Umbrellas to eat outside in the fantastic weather!
Stepping into the classroom, we were greeted with goodies including a backpack, hoodie, water bottle, pen, and notebook, all Google-themed! Then, it was time for our first class of CSSI, Intro to the Web: HTML/CSS. The class was taught by Nick and Larry, along with many TAs; they were all extremely helpful and explained the lesson really well. From Intro to the Web, I learned a lot about how HTTP and HTML work to enable web requests to go through to return a webpage when users enter a URL. 

Then it was time for HTML/CSS, where we created our own profile pages. As I had some previous experience, it wasn't too difficult to get back into the hang of things and pretty soon I was able to make page look aesthetically pleasing. After returning to Sudo Cafe for lunch, we continued working on some of the more intermediate aspects of HTML, including creating forms, tables, and the CSS box model. The entire day seemed to go by so fast, but in the end we tackled web design, created a really nice profile page, and re-learned a lot of the basics. 

We ended the day with dinner at the office, before returning to our dorms. The Google Kirkland campus has been great, and all the people are really nice and encouraging. Tomorrow we'll be tackling part 1 of Javascript, which I have no previous experience with, so I am really excited to continue learning more!



Sunday 27 July 2014

CSSI Day 1: Hello Seattle!


Today was a crazy blur of a day, from flying into Seattle to settling into the dorms where we'll be staying. It started off with me driving myself to the airport (great driving practice!).

At the airport, about to take off!

Thankfully, my flight wasn't too long and I was at SeaTac airport before I knew it. Luckily, my bag was one of the first to come off the carousel, as my flight was a little late. However, I was actually the second person to arrive at the meeting location; Cyril and I waited for Olivia and Samantha to come before setting off for our residence. During the ride, we all talked about how it felt to finally be in Seattle!

The beautiful view from my room.
Welcome info packet
and room keys! 

After checking in and settling into our dorms, it was basically time for dinner. While we had dinner, we had a short orientation and everyone introduced themselves. Then, we had free time for the rest of the evening; I hung out with Christine, Veronica, and Ali, along with our lovely RA Catalina. We talked for quite a few hours, until everyone started getting tired. Luckily, I only have 1-hour jet lag, which really isn't jet lag at all, but for some, 3-hour jet lags were beginning to take their toll. Tomorrow starts very early, so I'm hoping to get a decent night's sleep. But tomorrow we're off to the Google Kirkland office for our first official day! We all can't wait.

Saturday 26 July 2014

CSSI 2014: Thoughts on the Application

One more day until I depart for CSSI! I don't think the full extent of excitement/realization of the trip has hit me yet, which might be a good thing because over-excitement often prevents me from getting a good night's sleep! Anyhow, in lieu of CSSI's beginning, I thought I'd talk a bit about how I went from applying for the program and crossing my fingers, to receiving the anticipated call of awesome news.


I found out about the CSSI application very late, for by that time the deadline had (miraculously) been extended for two weeks. Reading the program description, my eyes widened. Opportunity to learn a variety of programming skills? Chance to explore a Google office and interact with Google employees? An all-expenses paid trip? Yes please. At the time, I didn't have much confidence that my application would be successful; after all, only around 90 students would be accepted out of what would clearly be a large pool of applicants. However, in the short time until the deadline, I worked hard at my application; fueled by determination and thoughts of "what if?", I refined my resume and edited my essays until I was satisfied with them. Along with a teacher recommendation/questionnaire, I sent in my complete application and waited to hear back from Google.

For anyone who is interested in applying to CSSI, my advice for writing the essays would be to stay true to yourself; draw on real experiences that you've had (or even hope to have in the future), as well as what you have gained/hope to gain from them. Also keep in mind that CSSI targets underrepresented students, including minority ethnicity and gender. For example, I was able to talk about my aforementioned summer with the WISEST program, which targeted female students interested in STEM (science, technology, engineering, mathematics) fields, and what I learned about female under-representation from the experience. When it all comes down to it, I believe that passion is key; if you have true interest for computer science and for learning, it should come across easily in your writings.  

Now, back to the application process. I was actually in Belize, on a volunteering trip with Rotary during my spring break, when I checked my email and found out that I'd made it to the next step: a phone interview. I was so excited at being closer to the reality of CSSI that the nerves didn't even hit until I was back home. Three days after coming back from Belize, I sat nervously in front of the phone, a good 15 minutes before the scheduled interview time. Sure enough, the phone soon rang and I was into my interview before I knew it.

They were right when they told us that there is no way to prepare for the interview. Some of the questions were based on what you talked about in your application, while others were more technical. We were interviewed by actual engineers who work at Google, and from what I've heard, everyone's questions were different. The technical questions were interesting because you didn't necessarily have to find the right answers; instead, they more so wanted to see how you could think your way through different problems. Combined with nerves, figuring out the problems and explaining my ideas over the phone was quite stressful, but I pushed forward by talking through my answers slowly and methodically. My interviewer was very nice, and I actually got to ask him a few questions about his work and what it was like working at Google at the end! The interview passed by in a blur; afterwards, it was really hard to judge how well I did, especially in the technical questions where I didn't know the correct answers, so all I could do was wait once again to hear back.

When I found out that I'd gotten into the program, I was ecstatic and so ready for three months of Google-y awesomeness! For the past few months, it's been really nice to connect with others who are going online, and anticipate the trip together. Even as I finish up my last-minute packing, it hasn't hit me yet that this crazy experience is going to start tomorrow. See you soon, Seattle!

Anticipated skyline view :)

Wednesday 23 July 2014

Background

Hello world! 
(Sorry, I couldn't resist.)

I'm Hannah, upcoming Computer Engineering student at the University of Waterloo and participant in Google's Computer Science Summer Institute (CSSI) 2014. In five days, I'll be leaving for CSSI at Google Seattle/Kirkland, and I couldn't be more excited! Through this blog, I hope to not only chronicle my adventures at CSSI but also beyond, going into the world of university and Computer Engineering. Furthermore, I hope that my experiences may be useful to anyone else who is interested in applying to CSSI or looking to pursue a similar field. 

First off, I'll be talking a bit about my background experience. My initial exposure to computer science was through an introductory course in grade 9. The programming that we learned was with a very basic programming language Turing, in addition to some HTML and CSS; the course was what began to foster my interest for understanding the ways in which computers function.

Unfortunately, after moving the next year, my new high school didn't offer computer science courses. Being busy with the International Baccalaureate program and other extracurricular activities didn't leave much time for self-exploring programming during the school years. However, in 2013 I had the opportunity to work as a Summer Research Student at the University of Alberta, through the Women in Scholarship, Engineering, Science and Technology (WISEST) Summer Research Program. I was placed in a computer science (CS) lab, where I worked with several other high school students, a CS graduate student, and a CS professor to develop an educational tool that focused on sexual health. In six weeks, we came up with the idea and then programmed our game using the game development tool GameSalad. Although this meant that we didn't have the opportunity to learn a new programming language, the experience heightened my understanding of the logic behind programming code. Furthermore, through the process of coding the game, I gained a lot of insight into the benefits and challenges of working on a team, especially in merging code and helping each other debug and solve any problems that we encountered. By the end of the summer, we managed to create a tangible phone application, featuring a four-level educational tower defense-style game! If you're interested in checking it out, you can download the game from iTunes or Google Play, depending on your phone platform.

The WISEST Summer Research Program was a truly valuable experience for me, which solidified my desire to pursue either Computer Science or Computer Engineering in post-secondary education. Participating in the program also opened up my eyes to the many programs that were available during the summer; although I didn't have much time to learn to code during the year, I sought out other experiences that would allow me to make the most out of my summer. In particular, this summer mattered a lot to me because university would be right around the corner and I wanted to start off with some degree of preparation. And so, when I found out about Google CSSI, I knew I was going to do my best to apply for a dream experience.

As I count down the days to CSSI, I will be talking more about applying to the program and also why I chose Computer Engineering!