Get your avatar

Lessons from the Herbert Summer 2016 Competition 

One of the first questions people ask when beginning to take an Intro Programming course, is how do you test someone’s ability to code? The general answer is having students code on paper, by being asked questions which challenge them to write a program using skills they should have mastered. The next question tends to be why. The testing questions are much more concise and pointed than large scale programming projects assigned as homework. To some students the idea of testing small scale problems for a subject which seems to have only large scale applications seems futile. A general answer most professors give is that in the industry, a portion of your interview will require solving problems similar to those given on a midterm. On a larger scale, however, learning how to solve small-scale programming or logic problems efficiently has much more benefit to programming than just preparing you for an interview.

Participating in the Herbert Summer Competition has established in my eyes that being able to solve small-scale and pointed programming problems is an important skill. Throughout each level of Herbert, the programming challenges increase in difficulty, as well as in the amount of skills which are being tested.  In large scale programming projects, it is highly likely that a broad range of skills will be necessary – various data structures, iteration, recursion, runtime efficiency, etc. – yet depending on the variability or broadness of a project, it is possible that these skills will be used in relatively the same manner time and time again. Or there may be a variety of other factors that lead to a lack of practice. A competition like Herbert provides a platform in which to practice logical thinking and problem solving skills, in a unique programming language, and in a different manner than usual.

Aside from interning, one thing that summer break always seems to provide is a chance to get away from school work. However, this always leads to a less than smooth transition when coming back to school. As a college student, and an engineering student specifically, there is no such thing as “Syllabus Week”, and the first day of lecture is just that; a first day of lecture. Within the first two weeks, I am already studying for a physics midterm, and having a long break from logical problem solving comes as a handicap when courses move that fast. There is no two weeks to transition back into using my brain regularly. Participating in the Herbert Summer competition has acted as a much needed challenge while I have been away from school.  The puzzles were challenging but enjoyable. Each level increase brings a unique puzzle, and it is very clear that they were built carefully and precisely. Adaption is a common skill necessary to proceed throughout Herbert, as the algorithm or thinking behind what may have worked to solve a previous puzzle, will not work down the road. Herbert challenges one to constantly build upon problem solving ability. Another feature I find very interesting and true to programming itself, is that there is no one right answer. There is the right answer that fits the correct efficiency, and completes the goal properly, but there is more than one way to get to that solution.

Overall, I have gained a lot of insight through participating in the Herbert Summer Competition. I believe that the skills which Herbert puzzles challenge, and focus on, are important skills to practice as a Computer Science Major. I believe that practicing these skills on a unique, and small-scale level aside from my large-scale programming intern work, will greatly benefit me when I begin taking classes again focused on logical thinking and puzzle solving. I also found Herbert to be fun. I generally spend my summers, or free time, playing Candy Crush and working to solve problems in that regard, but actually solving problems through coding language has proved to be a much more exciting task – and one which I think will yield myself a larger reward once the school year begins.

Posted by Miri Hyman Thursday, September 8, 2016 3:59:00 PM Categories: computer science game contests

I am a Woman in Computer Science But I Keep Forgetting That 

How do I feel as a woman entering the field of Computer Science? I feel excited? I love to code. Yet there’s also a little twinge of nervousness- how will I be received in a mostly male-dominated field? Will I notice that I am different? Will others notice it? Does it matter? I have a lot of questions, and I am sure they will all be answered as my life plays out. I am very optimistic that by the time I am fully immersed in the industry, there will be many more women. 

The question, “will I notice if I am different” is one I am particularly intrigued by. The thing is, I am not yet fully sure how I feel about being a woman in Computer Science. It is one of those things I don’t think much of until someone asks me. In my courses, my head is usually buried in my notes, or intently listening to the professor. I never really look around me to see how many girls or boys are in my engineering classes. When I score well on Matrix Algebra, Physics, or CSE exams, I don’t find out whether more boys than girls did well. It is something that I know is present, yet I am so used to it, I do not recognize it. 

When I lift my head and look around and actually am required to engage in a group setting, then I am suddenly aware that I think differently, and what I say is not necessarily taken seriously. When I first applied to the Computer Science major, they asked me to speak to the unique perspective I would offer to the program. My mom suggested I write about being a woman, but I told myself that was too much of a cliché.  That my essay wouldn’t have stood out had I gone that route. 

Thinking back on it, I do not know why I chose not to speak out about my being a woman, one things that give me a unique perspective, in a field that offers only 18% of its bachelor degrees to women. Being a girl and wanting to major in computer science was my unique perspective.  Yet, I undersold myself because I was convinced that being a woman and writing about it might be seen as complaining in the eyes of the admission’s committee. I told myself they can’t admit you based off of your gender. I told myself being a woman wasn’t really something special. I told myself I would be complaining about something that wasn't really all that bad. While my thought process was based in sound reasoning, as there have been countless pushes to encourage more young women to join STEM fields, there are still numerous amounts of backlash. For every push to increase numbers of women in Computer Science, there is another article trying to push women out of this field, one boy in your CSE class telling you you’re misusing a Linked List (you’re not), and one movie where the main computer-code-cracking character is a boy. The fact that I felt uncompelled to write about my being a woman as a unique perspective in the computer science field is just the beginning to why it gives me such a unique perspective.

Growing up I always loved math, and I never saw my gender as a reason not to. Yet, in the sixth grade I begged my parents to let me switch out of advanced math classes, because I thought loving math would make me unpopular. To my benefit, they refused to buy into this idea I had created in my head, and I stayed in my advanced math class - and I was much happier there. It’s no secret that past generations have been afraid of being “nerdy”- all you have to do is watch an 80’s movie or a Disney show and I guarantee the unpopular kid is good at school. The thing is, we are lucky we live in a day and age where it is becoming cool to be smart. We lift up the super cool tech savvy heroes who have created the social media and technological devices we love. The super smart kids who get into Ivy Leagues are envied, and getting a 5 on your AP Physics test is just as cool as scoring a touchdown or being a cheerleader. This changing demographic is clear, and all you have to do is watch 21 Jump Street to see it pan out in the media. So in this new and accepting, liberating world, why did I think acting dumber than I was would make me cool? Trying to figure the answer out, I started asking some of my friends at school questions.

I asked engineering and non-engineering students some questions. Both groups said that being smart was seen as cool at their high schools. Yet, when I asked questions related to their feelings on STEM courses, most males picked majors based on if they did or did not like STEM. Most women, however, who chose a non-engineering major picked it because they thought they were bad at math or science. I found these responses to be interesting, so I did some research and discovered hundreds of studies on the trend of girls’ declining skills in math.  The studies show that girls excel in math past boys in elementary school, yet fall behind once high school rolls around. These studies also note that girls and boys have the ability to perform equally in math, but girls believe they aren’t as good at it.  Math is an algorithmic process, and being good at it leads to interest in STEM, which therefore leads to choosing computer science. These studies are pretty sad when you think of what they must be doing to women’s interest in computer science. Thinking you aren’t good at something means you probably won’t choose that for a major and a career.

Thinking I’m not good at something all the time is another key to my unique perspective. I have noticed I do not have the same confidence in my work as my fellow male peers, but that doesn’t have to be a bad thing. I have learned I am more open to criticism, more flexible when it comes to problem solving, and more open to different routes to solving the problem. I have grown up with the idea that my thinking might not be right, so I actively seek out corrections and things to fix. This is a trait that is beneficial in the field of coding, because your first try at something probably won’t be your last. 

For the most part, being a woman entering the field of Computer Science is exciting. Although I have spent a majority of this post speaking to the obstacles I still see present, many people are working towards breaking down these barriers. It feels as though there are many people on my team, and many people want woman to succeed and become a part of this field. I feel motivated to do a good job at work, not just for my own benefit, but for this large support network I feel I have as a woman in STEM. Being a woman is not enough to get you a job, or to get you in a major, but it is something that represents a unique view you may have to offer. You still have to be exceptional at what you do, to be a team player, and embody a positive attitude. 

For every challenge that exists as a women entering the field of Computer Science, there is a definite reward. I am a girl who loves Britney Spears, glitter, the color pink and coding, and I am sure there are hundreds of girls just like me who would fall in love with CS if they gave themselves a chance. It is important for me to remember that I am special as a woman. What I bring to this field will, I believe, help me see things differently than my male counterparts, which in turn, will help us together as a team create some pretty cool code.

Posted by Miri Hyman Monday, August 8, 2016 8:02:00 PM Categories: computer programming computer science

Why I Like The Field of Computer Science 

John Irving once wrote, “If you presume to love something, you must love the process of it much more than you love the finished product.

In a way, my whole life has been spent solving puzzles and processing things. At a young age, I found I had a love for math. When I applied to the University of Washington, I knew I wanted to do some sort of science or engineering- a major built upon solving puzzles with math. However, I was unsure what type of engineering I wanted to do. Civil engineering was the type I knew most about, so I applied for Direct Freshman Admissions. While I enjoyed my freshman year classes, especially math and chemistry, I did not know what being passionate was until I signed up for my first intro coding class, CSE 142.

I never intended to like computer science. Growing up, my dad was a software engineer; his work seemed too hard and complicated for me to understand, and I wanted to be different. Throughout my life, various people have suggested I learn to code, or take a computer science course. Yet convinced that it was not something I would like, I turned it down every time. Up until the first day of CSE 142, computer science was still on the outskirts of my mind. However, after two weeks of class, I was hooked. I had finally found a passion. Computer science made so much sense to me; breaking down one large problem into smaller components was something I had been doing my whole life. Coding is the first language that has come naturally to me.

With each lecture, my excitement for computer science grew. I’d start each assignment as soon as possible; it was the highlight of my day. I loved learning about new approaches –lists, trees, hash tables, maps – and CSE 390 opened up so many possibilities as to how advanced computer science can be applied to everything from picking movies to curing cancer. I found myself wanting to learn more with each new concept introduced to me. Really, coding is fun. Creating something and being able to share what you made with so many people, and have them be able to work along with you on the same project, is so unique.  

I love computer science because it is a creative puzzle. If my program isn’t working, I get to dive right back into it to figure out what went wrong. It isn’t some great unknown, it is something I made, it’s logical, and I know if I work hard enough I’ll figure it out eventually.  Part of what is exciting about the process is that there is always something that can be improved upon and there is always more to learn. Maybe the code I wrote works in almost all cases, but some one else may propose a special case where it doesn’t work – that’s exciting because it opens up a whole new puzzle. There is always something to work towards solving, and I love that.

While I am thankful civil engineering brought me to computer science, there is nothing else I would rather devote my time and energy to than the process of creating something in computer science. While I may not get things on the first try, that’s the beauty of it. True passion is true love, if you are passionate about something, you love to fail at it as much as you love to succeed. You love creating and debugging as much as you love when your code works. With computer science, I love every step of the way to reach the final product - I love the process and I fully believe everyone else should give themselves a chance to love it as well.

 

Posted by Miri Hyman Thursday, July 14, 2016 4:10:00 PM Categories: computer programming computer science

The Story about a Box: Programming the Perfect Square? 

On June 1, 2016, Wild Noodle introduced its summer competition. This competition consisted of 25 levels, with increasing complexity, using Herbert and the “H” language.   Herbert’s “H” language has three statements: l (left) r (right) and s (straight) and they are arranged using procedures and parameters to achieve the desired goal of solving the puzzle in the most efficient manner; otherwise known as optimization .
Though the goal of the competition seemed pretty straightforward, I was left thinking about the objectives of the game. I pondered about various options for developing a square. For example, to create a simple box, I could program Herbert, using the following order of statements:

SQUARE 1
ssrssrssrss

This program would take approximately 11 Bytes to complete and if I wanted a bigger square that this would add to the number of Bytes required.  Thus, if my desired goal was to make a square as efficient as possible, well this was not the answer, but in contrast, it was a fairly easy to program.  But if my goal was to create square with the least amount of Bytes then I would possibly use the following program to achieve my goal:

SQUARE 2
a:ssra
a

In the program above, I am using a technique called recursion .  I am asking Herbert to do the side of the square along with a turn to call itself indefinitely.  This program took only 6 bytes.  Yet again, if I wanted to make my square 5 or 10 times larger, well this would take additional bytes, again challenging the goal of efficiency.

SQUARE 3
a(A):sa(A-1)
b(A):a(A)rb(A)
b(2)

Though this program took 15 Bytes, it would eventually be more efficient than the previous program if I wanted a box larger than 11 s (statements).  This program allows me to program the number of steps forward Herbert should go for each side of the square.
Yet Herbert has so many options to solve the puzzle of the square.  Here are just a few ways to draw a square of size 10:

SQUARE 4
a(A):sa(A-1)
a(10)ra(10)ra(10)ra(10)

SQUARE 5
a(A):sa(A-1)
b:a(10)r
bbbb

SQUARE 6
a(A):sa(A-1)
b:a(10)rb
b

SQUARE 7
a(A):sa(A-1)
b(B):a(10)rb(B-1)
b(4)

SQUARE 8
a(A):sa(A-1)
b(B,C):a(C)rb(B-1,C)
b(4,10)

As I explored the myriad square creating options, I realized the beauty of Herbert.  Though the Herbert competition primary objective was to solve the given problems in the most efficient manner, the Herbert program had the ability to teach me how to think about variability of options to solve one problem and that learning the different options, allowed me to understand the complexities of problem solving.  It also allowed me to expand my ability to think outside the box.  What if I wanted to take my box and give it fancy corners or make many boxes? The more options, I created, the wider my scope to find solutions.  Look at my designs below:

Box with Fancy Corners
a(A):sa(A-1)
d(D):sld(D-1)
b(B,C,E):a(C)rd(E)srb(B-1,C,E)
b(4,10,3)

Many Boxes with Fancy Corners
a(A):sa(A-1)
d(D):sld(D-1)
b(B,C,E):a(C)rd(E)srb(B-1,C,E)
f:b(4,5,3)rsssf
f

Ultimately, Herbert and its “H” language, not only allowed me to think about the complexities of problem solving, but it also allowed me to explore the art of computer programming, the art to develop and design…Hello World!

 

View User Profile for Soraya Cardenas Dr. Soraya Cardenas holds a doctorate in Sociology and is the President of Wild Noodle.
Posted by Soraya Cardenas Monday, June 6, 2016 5:28:00 PM Categories: computer programming tips and tricks

Herbert is Back! 

I am very pleased to announce that Herbert, the challenge previously in Microsoft’s Imagine Cup online software programming competition, is back! We are kicking off a new Herbert competition for summer 2016.

Herbert challenges your ability to see patterns and create algorithms to produce these patterns. It can be used both as a teaching tool for programming as well as a challenge for seasoned programmers. I think you’ll enjoy challenging yourself with Herbert, whether you are new to programming, new to Herbert, or a seasoned Herbert competitor from the past.

Ready to take on your peers? The Summer 2016 Contest will run June 1 through August 31, 2016, and will consist of 25 levels, ranging from very easy to extremely challenging. How far can you get?

Registration is already open – click here to sign up today!

View User Profile for Brian Conte Brian Conte is the Chief Technology Officer at Wild Noodle, and the original creator of Herbert.
Posted by Brian Conte Friday, May 27, 2016 7:57:00 PM Categories: computer programming game contests

Hello World! Welcome Herbert: A Computing Programming Language Tool for Educators, Technical Recruiters and Gamers 

Hello World,

I am Dr. Soraya Cardenas, President of Wild Noodle. Today is my first blog.

In 1985, Mr. Brian Conte, President of Fast Track Team, created a program, which he named Herbert, to help teach algorithmic problem-solving and design. Herbert is a game-based programming teaching tool and challenge which was used from 2004 to 2008 in Microsoft’s Imagine Cup Algorithm Competition. The Algorithm Competition had the highest satisfaction rating among all Imagine Cup competitions and Herbert has been used by over 20,000 students, and continues to be used daily. In 2009, Mr. Conte founded Wild Noodle to develop educational tools in computer programming.   

In 2016, Mr. Conte approached me to help run Wild Noodle.  What do I bring to Wild Noodle?  Over 20 years of academic experience.  I have won numerous teaching and research awards and grants.  My area of expertise is in high-impact, experiential learning.  I also am a Sociological Researcher. I am trained to conduct research on social trends, change and movements.  I understand the importance of interpreting demographics and its impact on society.  These are all skills that are an emerging need in the tech industry.  Today, the United States is going through a technological revolution.  We have reached a point when industry needs are not being met because of a shortage of skilled laborers.  

Economies are divided into three types: primary, secondary and tertiary.  A primary economy refers to an economy dependent on the extraction or production of raw resources such as mining, farming, fishing, and logging.  The secondary economy refers to the production of a product such as using ore to manufacture cars.  The tertiary economy is the delivery of services.  Our economy in the United States is largely a tertiary economy. Most manufacturing jobs were shipped overseas in the 1970’s and 1980’s.  Today, we see a blend of the secondary and tertiary economy.  We are in need of skilled laborers to help with using the technological tools to provide services, but we also see a resurgence in the secondary economy as we need skilled laborers to help build those systems that society depends.  National Science Foundation, and many tech companies such as Microsoft and non-profits like Code.org have noticed the gap and are investing in remediating the gap.  

Mr. Conte recognized that tech industry gap, but also realized that there needs to be more than the development of software, but that there needed to be a merge between high skilled teachers and researchers into the tech field.  For example, his computer programming learning tool Herbert has the capacity to teach children as young as 5 to students in graduate school. Its ability to move up in a level of complexity marks a very much needed tool in the primary and secondary schools, and is a much needed program to help link block coding tools like Scratch to more advanced tools like Java. So here I am.  I am participating in this venture to help support this need and demand. My future blogs will be filled with information about teaching and research in computer programming.  In addition, I will begin learning how to code to demonstrate that almost anyone can code given access to the right tools and resources.  I look forward to taking this new path in my life, which I hope will help others partake and join the need to learn computer programming.

Hello World,

Soraya Cardenas, Ph.D.

“My fancy box, using Herbert (AKA “h” language)!”

View User Profile for Soraya Cardenas Dr. Soraya Cardenas holds a doctorate in Sociology and is the President of Wild Noodle.
Posted by Soraya Cardenas Friday, May 20, 2016 9:59:00 AM Categories: computer programming educational programming