Did you know that eIMACS serves students in over 10 countries around the world? This week, our blog post features current student, Hossain Md. Jihad Turjo. Turjo is a talented 11th grader at Mastermind School in Dhaka, Bangladesh. In addition to excelling in his eIMACS courses, he has also earned top marks from other prestigious online programs for bright students, including Johns Hopkins Center for Talented Youth (CTY) and Stanford’s Education Program for Gifted Youth (EPGY). When not immersed in his studies, Turjo enjoys reading novels and has even had three published book reviews for CTY’s Imagine magazine:
• “Guns, Germs, and Steel: The Fates of Human Societies” by Jared Diamond
• “H.I.V.E.: Higher Institute of Villainous Education” by Mark Walden (Click on the ‘Preview’ button to read Turjo’s review.)
• “The Boy Who Harnessed The Wind” by William Kamkwamba and Bryan Mealer
How did you first become interested in computer science?
My first programming experience of any sort was at school in 8th grade – we had the basics of Visual Basic as part of our coursework curriculum. There were quite a few incidents which hooked me to programming during the six months or so that I had Information and Communication Technology (ICT) at school as part of my curriculum. An example of such a case would be when we were learning to program a calculator for adding numbers with the digits 0, 1 and 2. The “calculator” would have virtual “buttons” labeled +, 0, 1, 2 and =, and would have a screen for displaying the numbers typed in or the result.
Of course, the very thought was horrid to me – the numbers lacked 70% of the digits, and I could only do addition. At the moment, our teacher was not inclined to be very explorative either. So I decided I could do better, and pretty soon I had a calculator with all the digits, an operation display alongside a numbers display, all the operations instead of simply addition, and functions for taking nth roots, raising numbers to any exponent and reciprocating numbers.
That was the kind of small trivial thing that later snowballed into a massive interest in computer science and programming – and eIMACS was perfect for it.
Residing in Bangladesh, how did you find eIMACS, and what made you decide to take one of our online computer courses?
I found eIMACS while browsing the net for computer science courses that are on offer for young and talented students. So I made an inquiry about what courses might be on offer for me, considering that I was a complete amateur in the field of computer science. The next day, I spoke on the phone with a senior IMACS instructor who suggested that I start off with University Computer Science I, that apparently being a very good beginner’s course. So I took the Aptitude Test, managed a good enough score, and started the course that very day. I guess the main deciding factors in what made me choose eIMACS was the promptness and enthusiasm of the instructor’s reply, the fact that he offered to be my instructor even though I was a novice, and the course description on the IMACS Web site.
As a student who has taken or is taking several online courses in math and science from different vendors, how did your experience with eIMACS compare?
In addition to UCS1 from eIMACS, I have taken Honors Chemistry, Honors Biology, and AP Calculus BC from CTY and AP Physics C: Mechanics from EPGY. I am now continuing AP Statistics from Northwestern University’s Center for Talent Development (CTD).
The courses from eIMACS and CTY were all self-paced allowing me to work on the lessons and the tests at whatever time suited me most, contrasted against a fixed course in which lessons are taken by an instructor, normally during his office hours. That was a thing I really liked about eIMACS and CTY – the self-paced option, seeing that a fixed course would be extremely hard for me to keep up with due to the huge time zone gap. Also the quality of presentations for both the eIMACS and CTY courses was really high.
CTD’s AP Statistics course, which has been a satisfactory experience thus far, is next best, and then EPGY’s Mechanics course after that.
UCS1 from eIMACS is the clear winner when it comes to the best course among these. It started at a very basic level in a way that made it extremely easy for me, a novice to understand. I loved the user interface and the way computer science code was introduced to the rookie. The course got progressively more challenging and, I might add, more fun. An awesome thing about UCS1 was the way the tests were taken entirely online. I mean, it is kind of tedious to have to write out answers on a give question paper, scan it and then e-mail it, the way I did it with CTY. But given that one was a math course, where steps and working are extremely important, I guess that was the most suitable option for CTY.
As to instructor availability, I think it’s reasonable enough to say my IMACS instructor was the one I had the most contact with. He was simply more cheery, more communicative and more encouraging than my instructors from the other programs. I’m not saying the others didn’t have those qualities, but my IMACS instructor had it to a great extent.
UCS1 is taught using the programming language Scheme, whereas many introductory courses take students straight into Java, especially since the College Board’s Advanced Placement exam is currently in Java. What’s your view on the eIMACS approach?
I felt that UCS1 did an awesome job in introducing me to the field of computer science. The approach of using Scheme seems to me to be much better. I have seen Java code for web pages a few times, and it did look quite a degree more complex than Scheme. Hence I would say the IMACS approach in using a simpler language (simple is a relative term) as a beginning language is all the more effective for its simplicity. I found I was able to focus on learning the programming concepts instead of worrying about whether I was getting the syntax right. And if anyone was very interested in Java, they can always take the AP Computer Science course from IMACS. So I would say that the IMACS approach is a very effective method.
Your goal is to major in computer science at a US university. What would you like to do after that? Do you have a career vision in mind?
I would simply love to become a top programmer or “Head Game Designer” at someplace like Microsoft or Sega. There are some pretty awesome games out there and someday I want to be the one bringing to life better themes than those games did, coupled with a much better game-playing experience. Sky Target and The House of The Dead series are classics that are impossible to forget – both Sega productions. Someday I hope I can do better.
Originally published in the May 1992 issue of The Computing Teacher, this essay by IMACS alumna Natasha Chen brought much needed attention within computer science education circles to the debate over teaching computer programming for beginners. Amazingly, almost 20 years later, the key issue raised by the article – how to teach fundamental computing concepts in a way that is effective, engaging and empowering – remain unresolved. Many students still find themselves in syntax-driven classes that focus on a short-term ability to “make apps now!” in the language du jour rather than being taught strong fundamentals that enable success throughout college and career, regardless of which programming language is used. At a time when the US faces a huge gap between technical job positions and qualified individuals to fill them and the UK is grappling with a need for true computer science in its national curriculum, IMACS revisits this issue with a renewed urgency.
A Bad Beginning In BASIC
My first experience in computer programming classes was an elective course in BASIC back in sixth grade. I chose that class because I thought that computers were powerful and capable of doing many interesting things. Electives usually have a reputation for being fun, but my classmates and I heard stories about the difficulty of this course and how only one or two kids ever got A’s. I thought to myself, “Maybe they just weren’t interested in computers. But I am, so how bad could it really be?”
Pretty bad! Forget learning anything that encouraged us to think, wonder and explore. We were asked to study the history of computers, memorize the names of hardware, and master the rules of syntax. We were sixth graders. We weren’t about to enter the high-tech world of programming. All we wanted was to see what neat things we could do with the computer. The class wasn’t difficult at all; memorization is hardly a challenge if you take the time to do it. There were so few A’s because no one cared to do busy work, and that’s all that was offered.
Swamped By Syntax
After my sixth grade BASIC experience, I never wanted to take another computer science course again. Of course, when you are eleven years old, G.P.A. and class rank don’t mean much to you. But by the time I was about to enter my junior year in high school, I started thinking about those things … and college … and the classes I needed to take. To avoid another BASIC nightmare, I decided to bypass Computer Programming I (BASIC) and go straight into Computer Programming II (Pascal). Pascal was different enough from BASIC to make me think that it had to be better. I found out that the improvement was far less than I had hoped. We jumped right into the syntax of Pascal: program (input, output), begin-end, etc. Even after two years of studying Pascal, I still can’t remember all the rules.
It’s like trying to interest small children in reading. You try to show how much there is to discover in books by reading with or to them. Maybe they will pick up some books on their own and then some more, and pretty soon they will have built up a library. But if you dump the library on top of them, ask them to memorize the Dewey Decimal System and then put the books back in order, by the time they finish – assuming they do – they won’t care to look at another book, much less read one.
One of the students from that CP2 class had a very hard time with the syntax of writing information-processing programs, but when it came to the one graphics program we were assigned he was an absolute genius. I can’t begin to describe all the amazing things he could make the cursor do. But he was never recommended for the AP Computer Science class. By having no place for such a student, the computer education system may very well be tossing aside some of the best computing minds, simply because they don’t fit the mold of the curriculum whose rigidity derives from that of the languages used.
AP Computer Science: As Good As It Gets?
Five of us made it to the AP CS class and four more came from the CP3 (Fortran) class. We spent the first two days refreshing our memories of the syntactic rules that had evaporated over the summer. It seemed as if the purpose of CP2 was to teach us the rules and now, we had to remember them so that we could play the game – someone else’s game.
The last year was one of frustration. The most commonly heard outburst in our classroom was undoubtedly, “Stupid computer!” No matter what, it was always the computer’s fault. It seemed that my classmates’ programming strategy was to let the computer find their errors in the hope that this would somehow help them solve the problem. It never occurred to them that the computer is simply a testing ground for a well-thought-out idea. A human could conceivably go through an algorithm manually; it would just take an intolerably long time. For most of my classmates, this was their fourth year in the computer science education system, and all it had taught them was to rely too much on the computer and not enough on themselves.
The root of this problem lies in what is currently thought to be important for students to learn in computer programming courses, namely, syntax. Whoever is designing the high school computer science curriculum seems to think that, once students learn the rules of the language they are studying, having them write programs that demonstrate how those rules are applied will teach them what is important in computer science. As a student who has been through the system, who has had to waste the majority of my patience, concentration, and effort on keeping the syntax of my programs straight, leaving barely enough of these qualities to devote to solving the problem, I can tell you that such a belief could not be more wrong. This method of teaching is brainwashing. It is not like brainwashing or similar to brainwashing; it is brainwashing. It is a danger to computer science, sending out trained hackers instead of enthusiastic visionaries. Fortunately for me, I was given the opportunity to recover.
Saved By Scheme
In ninth grade, my math class began an introductory computer programming course in Logo. My classmates and I looked forward to every other Friday when we studied Logo, not only because it meant a break from math, but also because working in Logo was a lot of fun, and it was easy. Unfortunately, that course was ‘squeezed out’ as far as my class was concerned by the pressure of our math courses over the next three years. During that time, however, the course had been rewritten using the programming language Scheme.
As a senior, I had a study hall period that I sometimes spent in my math classroom doing homework. It was on one of these days that I happened to overhear my math teachers talking about Scheme. I was already tearing my hair out in my Pascal class trying to learn something for the upcoming AP Computer Science exam – in fact, all I was learning was the page number of the reference section in our textbook, which I frequently consulted to see whether type declarations or variable declarations came first or to re-check how to declare a record for a linked list. Enticed by what I heard, I willingly gave up my study hall to come in four days of every week to learn Scheme on my own for no credit at all, using The Schemer’s Guide.* My reward was that I regained the enthusiasm and interest I thought I had lost six years earlier.
In the four months it took me to complete my course in Scheme, I learned more about computer programming than I had in my two years of Pascal. In less than five minutes after I began reading the text, almost everything I learned more than three years previously in our aborted Logo course came back to me. Five minutes, not the two days it took to recover from just one summer away from Pascal. There were hardly any rules of syntax to remember. Furthermore, throughout the entire four months, I never touched a computer. The ease of learning and using Scheme gave me such confidence in the programs I wrote that I didn’t feel the need for the security of a compiler to check my work.
Simple Language Makes Learning Complex Concepts Easier
The thing I liked most about taking this course in Scheme was that I knew that I was learning something. Every concept I had ever tried and failed to understand comprehensively in my Pascal class – searching and sorting procedures, recursion, processing binary trees – was made clear when I studied them in Scheme. These things occur so naturally in Scheme that I couldn’t help but understand. After mastering the concept, I could then go back into my Pascal class and easily master the code. The point here is that concepts like these are universal in computer science. After you understand them, then you can learn the rules of any language in order to encode them. But it doesn’t matter how well you have mastered the syntax of a language if you don’t understand the meaning of what you are typing or the reason why it works.
Recursion serves as a prime example. My understanding was very vague; I knew that something was done over and over again. But after seeing the first recursive program in the Scheme text, I understood what it was all about. When we took the test on recursion in AP CS, my whole class seemed to choke, with grades in the 60s and 70s, and the second highest score in the 80s. Thanks to my background in Scheme, I aced the test. I couldn’t quite believe it myself! For the first time, I fully realized that Scheme was not only easy to learn; it was also easy to learn from.
It is a myth to think that length and complexity make a program impressive – a prevalent idea among my AP classmates. Scheme code is clear and easy to understand. There is no need for pseudo-code. Thoughts go straight from your head to clear, simple code. The strange thing is that Pascal sets you up to fall into the trap of complexity and to disobey the laws of top-down design. As a procedural language, it enticed us into trying to do too much in one procedure simply because it could be done. With Scheme, I couldn’t write a function that had more than one purpose. It is as inherently top-down as it is inherently recursive.
Computer Programming Is Fun Again!
In my four months of studying Scheme, I not only covered and understood everything that had been presented in the AP Computer Science course, but went beyond that to study functional programming, data and functional abstraction, objected-oriented programming, and artificial intelligence. I still can’t believe all the amazing things I have learned in this short time. This is how I wanted to learn when I was in that BASIC class in sixth grade. I had to wait six years to do it, but it was well worth it.
I wrote this article because I don’t want another kid to have to go through the frustration that I did and not get anything out of it. I don’t want another kid’s enthusiasm snuffed out by a pile of library books. I want students who study computer science to be inspired to create their own game. Kids never liked rules anyway, and that’s all we are – kids.
Robots, robots, everywhere! If you follow current news on science or technology like we do at IMACS, then you’re bound to have noticed that robots are a popular topic. From the Roomba vacuum to the da Vinci Surgical System, these mechanical marvels affect many aspects our daily lives from the mundane to the life changing. Along the way, numerous robotics programs for school-aged children in the US and around the world have been established, and earlier this year the Boy Scouts of America introduced its new robotics merit badge.
Why the burst of interest over the past five or so years? Here are a few key factors that have recently come together to foster this growth: (1) The global economic downturn put a spotlight on which types of job skills are in demand and will be even more in demand in the future; (2) Industry and political leaders regularly note the gap between those job skills and the current levels of student participation and achievement in science, technology, engineering and math (STEM); (3) Robotics technology has become more affordable and accessible with companies such as LEGO developing robot kits that, while targeted toward children, enable the exploration of complex engineering and computer programming challenges; and (4) Education leaders recognize that robots could be used to engage children in fun and interesting activities that would deepen their understanding of all STEM subjects, along with teaching some important life skills.
There are at least two types of robotics programs: those that integrate robotics as part of a course curriculum and do not lead to a competition, and those that are organized as extracurricular activities and do lead to some type of competition. In a typical competition-based robotics program, each team of students is responsible for designing, building, and programming an autonomous robot to accomplish a set of pre-defined engineering challenges. The autonomous nature of the robots requires students to know or learn how to program them using a computer programming language. Some programs have separate showcases or entertainment-based categories that emphasize imagination and creativity. Most stress the importance of some kind of life skill, from simple teamwork all the way up through a whole menu of real-world skills that form a key part of the judging criteria.
Whatever kind of emphasis you’re seeking, there is likely to be a robotics program out there to match. If you’re just starting to explore options for competition-based programs, here is helpful list of national organizations to start with:
• Founded in 1989 by the inventor of the Segway Personal Transporter.
• Over 2,000 teams from across the US and from 11 countries participated in 2011.
• There are four main divisions: FIRST Robotics Competition (FRC) is the flagship program for high school students. FIRST Tech Challenge (FTC) uses a head-to-head sports tournament model and is also for high school students. FIRST LEGO League (FLL) is for ages 9-14. Jr. FIRST LEGO League (Jr. FLL) is for ages 6-9.
• Rookie team registration for one FRC event and the kit of parts costs $6,500. Teams may register for additional events at $4,000 each, and they may spend up to $3,500 on additional parts for their robot. The FRC Handbook provides a sample budget for a rookie team attending one local regional event that totals almost $13,000, and that does not include any travel costs. If you had high hopes for your child competing in FRC but were not aware of the magnitude of the cost, don’t pass out just yet—finding sponsors is actually an integral lesson of the competition, as much as securing funding is part of research and development in the real world. The FTC program requires a much smaller investment, but one that is still in the range of $1,500 to the low thousands. At the other end, registration for Jr. FLL is $25 and the base kit costs about $140.
• Students may only use the official robot kits and other materials that are tightly prescribed in the program rules.
• While engineering is the heart of these competition, FIRST programs are equally designed to develop people and life skills such as time management, collaboration, communication, self-confidence, and leadership.
• Founded in 1993 by Texas Instruments.
• In 2010, over 850 middle and high schools participated. They are primarily based in Texas and surrounding states and in the Southeast.
• For the robotics game, teams compete four-at-a-time in round-robin matches. All teams must submit a project notebook describing their engineering design process. Students have the option of competing for an overall award that covers qualitative factors such as oral presentation, an educational exhibit, the engineering notebook, and spirit and sportsmanship in addition to robot performance.
• Participation for schools is free. There is no registration fee, and all materials are supplied at no charge. How can this program be free? Corporate sponsors provide all of the high tech equipment, which must be returned each year, as well as the software. The set of consumable materials is fairly simple and includes basic items such as plywood, PVC pipe, wire, screws, and tape. Creativity and inventiveness are essential qualities in this program.
• Participants are required to use the control system kits currently provided by corporate sponsor VEX Robotics (discussed below).
• BEST describes itself as being less about building robots and more about teaching students how to analyze and solve problems.
• Established in 1997 by the KISS Institute for Practical Robotics.
• Over 300 teams participated in 2011, including teams from Qatar. US teams are primarily from the West, Northeast, Texas/Oklahoma, Greater D.C. Area, and Great St. Louis area.
• The program is for middle and high school students. All teams, regardless of the ages of the students, participate in the same competitions.
• Teams compete unopposed in seeding rounds followed by head-to-head double elimination rounds. Those who are eliminated have the opportunity to be paired in cooperative alliance matches. All teams must also document their engineering process and present this work as part of the tournament competition. Students who prefer a non-competitive platform may submit an autonomous robot project, including robots integrated into artwork, to the showcase. Students may also submit short papers on specific robotics-related topics.
• For the 2012 season, the subsidized registration fee for US teams of $2,500 covers tournament participation, the Botball robotics kit, and programming software. The unsubsidized fee is $3,200. Reusing equipment from prior seasons reduces the registration fee by $530. Teams are encouraged to find corporate sponsors and to host fundraisers to defray costs.
• Students must use the official robotics kit, which includes an iRobot Create robot base, various additional parts, and all necessary tools to build the robot. The required programming language is KISS C, which was designed by the organizing sponsor for teaching robotics.
• One of the factors that Botball tries to differentiate itself with is the support it gives to educators. Every Botball region hosts a hands-on professional development workshop for team leaders, and the reusable equipment remains with them after the tournaments for use in the classroom.
• Started in 1998 by RoboCup, an international organization whose purpose is to foster artificial intelligence and robotics research.
• In 2011, 251 teams from 29 countries participated in this predominantly international competition.
• The program targets students aged 19 or younger. While no minimum age is specified, students must be able to read, as well as write computer programs for their robots without substantial help from adults. Age divisions are broken into teams where all students are 14 and under, and teams where any student is over 14.
• There are three competition categories: soccer, rescue, and dance. The soccer challenge pits 2-on-2 teams of autonomous robots against each other. In the rescue challenge, robots must quickly identify victims within a simulated disaster scenario. The dance challenge is further divided into dance and theatrical performance and is designed to encourage creativity.
• Students may choose which robot platform and programming language to use, and they may also add additional equipment to the platform.
• RoboCup Junior differentiates itself by keeping the challenges the same from one year to the next. This point of this approach is to allow students to learn from their prior experiences and improve their algorithms and hardware as they grow.
• Established in 2000 by Lawrence Technical University in Michgan.
• Almost 500 teams from the US, Canada, China, Korea, and Singapore participated in the 2010-2011 season. Nearly half of the students were from Michigan.
• The program has a division for students in grades 5-8 and one for high school students.
• Competition styles can be generalized into two categories: games that use fixed rules and open-ended exhibition. The game challenge changes each year. The exhibition category is designed to encourage creativity and includes a robot fashion and dance show and a robot parade.
• Registration is $50 per team, and some site hosts may charge an additional fee of the same order. Suggested robot kits cost about $200-250, and a playing field costs about $50.
• Students may choose any type of robot technology and programming language, as well as use tape, glue, bolts, nuts, etc. to construct their robots. Components and materials used to build robots and playing fields may be reused from year to year, thereby reducing cost.
• The focus is firmly on learning computer programming. Additional activities like giving a presentation on the team’s research findings are not included.
• Founded in 2004 by the president of the Robotics Society of America.
• At RoboGames 2011, 239 teams from 17 countries participated.
• All ages are welcome, so many teams consist of adults. Junior League events are restricted to participants aged 18 and under.
• RoboGames is more a collection of over 50 smaller competitions all happening in the same place over several days. This explains why it is promoted as the “Olympics of robots.” In fact, most of the events are sports-based. The Junior League does have more engineering-based events, as well as creative showcase events.
• The registration fee for most events is $50, but none costs over $250. Participation in many of the Junior League engineering events is free. The cost of equipment varies by event.
• Each event has its own rules for building and controlling the robot. For example, the LEGO-based competitions require LEGO parts, but other events leave the choice up to the participant. Some contests allow for remote-controlled robots, so those particular events would obviously not stress computer programming skills.
• The main goal of RoboGames is to encourage robot builders to expand outside their area of specialization as a way of fostering a cross-pollination of ideas.
VEX Robotics Competition
• Established in 2008 by Innovation First, the maker of HEXBUGs and owner of the VEX Robotics brand name.
• More than 3,500 teams from 20 countries participate in over 250 tournaments worldwide.
• The program is for middle and high school students, although a college-level challenge was recently added.
• In tournament matches, two alliances composed of two teams each compete against one another. Each match has a period where robots are controlled autonomously and a period where they are remotely operated.
• The registration fee for each team is $75. Robot starter bundles from VEX cost $300 for the simplest version and can go well above $550 for the most sophisticated model. The competition field and perimeter kits sold by VEX total $1,600, but the company also offers tips on how to build low-cost options. Total competition costs can definitely breach the $2,000 mark.
• As you might guess, teams are required to use the VEX Robotics platform.
• VEX bills its competition as “the fastest growing robotics program and largest middle and high school competition in the world.”
For additional information and resources on robotics as an educational tool, check out the following organizations:
Carnegie Mellon Robotics Academy – The academy is part of the university’s world-renowned Robotics Institute. Their mission is to use the motivational effects of robotics to excite students about science and technology.
NASA Robotics Alliance Project – The project’s mission is to create a human, technical, and programmatic resource of robotics capabilities to enable the implementation of future robotic space exploration missions.
Adam Sternberg began his path to engineering as part of Project MEGSSS in Broward County, Florida. (The principal curriculum developers and teachers for the Florida MEGSSS program founded IMACS in 1993 using the same Elements of Mathematics courses.) He went on to earn his B.S. in Electrical Engineering from the University of Maryland College Park and his M.S. in Electrical Engineering with a concentration in Digital Signal Processing from Florida Atlantic University. In his role as a software engineer for innovative companies such as AlliedSignal (now Honeywell) and RadiSys, Adam was responsible for developing software used with flight navigation tools and telecommunications products. He is currently a senior software engineer at Pace Americas. In his spare time, Adam has even been a volunteer teacher, sharing his knowledge of computer programming and university-level logic with elementary school students.
You were part of the first group of students in the Broward County MEGSSS program. What were your thoughts when you started progressing through the curriculum?
The MEGSSS curriculum (which has now evolved into the IMACS curriculum) was different from anything I had seen previously. In the standard honors math class, my friends were mainly doing more of the same material as the regular class at a faster pace. In MEGSSS, we covered the expected topics, but the majority of the time was spent learning concepts that students usually don’t see until college. In most math classes, theorems are stated as fact, and then students are expected to apply them. In MEGSSS, learning how to prove those theorems from principles proven earlier was an essential part of our education and resulted in us having a deep understanding and appreciation of the subject.
What knowledge and perspective did you gain during that time that influenced the career path that you took?
The subject matter from MEGSSS that helped the most was logic (predicate calculus). I found I always had an affinity with logic and the structure of proofs, and that made me comfortable with the process of coding in a high-level language, such as C or Perl. The MEGSSS/IMACS experience in general, with its emphasis on logical proofs building on previous theorems and axioms to explore new topics, evolved into an ordered approach to problem-solving that is the hallmark of a good engineer of any discipline.
Please describe what a software engineer does, big picture and day-to-day.
A software engineer is responsible for the design, implementation, and maintenance of a software product, whether it be a Web site, an app for a smartphone, or the radar on an airplane. This includes designing proper test cases for the product, and identifying and correcting bugs found in the product code. Software engineers are also often called on to make judgment calls in triaging bugs found during a test cycle and determining both the severity and the likelihood of a bug appearing in the field with a released product. As software and the equipment they run on are rapidly evolving, software engineers must also make sure that they are familiar with the latest trends in programming languages, algorithms, tools, and related technology.
In your experience, what kind of personality and/or non-technical skills makes a person well-suited to be a software engineer?
Good communication skills are vital to be able to explain technical details to a non-technical audience (such as customers or the sales team) because software engineers often work in a corporation and not a vacuum. Also, good detective skills (such as observing behavioral patterns) are vital to finding bugs. Finally, no one’s code is perfect, and colleagues and supervisors will find fault with an engineer’s design or code in a review, so a thick skin is also helpful.
What education, skills and training make for success in the job?
A Bachelor’s degree in Computer Science, Computer Engineering, or related field (such as Electrical Engineering) is vital, and a Master’s Degree is often preferred. As an engineer’s career progresses, tasks may become more senior in nature, so leadership, project management, and even mentoring skills are good to have. Structured problem-solving skills, like what students develop at IMACS, and solid design skills are vital.
Today, we’re chatting with Iain Ferguson who – in addition to being IMACS’s senior curriculum developer for the computer science program – is the guy behind the sophisticated technology that runs our online computer programming classes. Iain has taught these courses as well, and so brings with him the experience of having seen what works in the classroom and what doesn’t.
Q: Why does your Introduction to Computer Science course use the Scheme programming language? Isn’t the Advanced Placement exam in Java?
A: We start off with Scheme because it’s the most effective for helping students to understand the fundamental concepts of computer science that are common to all programming languages. And we’re not alone in this choice. Graduates of the some of the top universities, including MIT, Yale, Princeton, Johns Hopkins and UC Berkeley, were first taught to program in their freshman year using Scheme.
What we’ve found over 20 years of teaching this course is that if you throw a new student straight into Java, or whatever language the AP exam covers at the time, he or she can easily get mired in its complicated rules of syntax. If you simultaneously try to make a student learn the fundamentals, which are arguably more important, some of those fundamentals just won’t be understood, or they’ll be understood incorrectly. And so the students try to move on to more complicated programming assignments, and they’re hampered by a false understanding of the underlying abstract thinking.
Scheme’s syntax is simple and natural. So it takes our students very little time to pick it up. They use their mental energy instead on developing a deep comprehension of the the abstract mathematical thinking involved in programming. Applying that way of thinking to concrete computer algorithms is then rather trivial for them.
Q: Beyond doing well on the AP exam, how do you know that this approach of teaching Scheme first is working?
A: We hear from a lot of our former students once they’ve gone on to university about how easy their classes are thanks to what and how they learned here. One of my favorite stories is of a student named Erik who went to Virginia Tech. He was taking Computer Engineering in a class of about 600 students, and the first exam was designed to weed out about half of them. So Erik completed the test in 10 minutes with a perfect score. The next day the professor called him in and accused him of cheating. Well, of course, he hadn’t cheated and when he said so, the professor gave him a similar question that was solved just as quickly. Then the professor wanted to know how it was possible for a freshman to have such a deep understanding. Erik told him about learning to program with Scheme, and that was enough to convince the professor that not only had Erik not cheated but that he was also the strongest student in this class of 600.
Q: If Scheme is so beneficial, why don’t more high schools offer it?
A: Their resources are very limited, especially in this economic environment, and the demands on teachers’ time is rather significant. As with most university-level courses, it’s unrealistic to ask high schools to even consider putting resources towards preparing and teaching a class like this. If you really want to do it at a high level, you need instructors with an extensive background in university-level computer science and extensive training in teaching advanced subjects to young adults. Plus you either have to develop the appropriate curriculum or find it and license it. So you’re looking at a lot of time and expense, both of which are, unfortunately, in short supply at the typical high school.
Sounds like a guy who knows his stuff! What language did you use in your first computer programming class, and did it leave you with confusion or clarity?
P.S. If you’re ever in South Florida and want to play a game of Nim, stop by our offices and ask for Iain. He will destroy you, and it won’t hurt a bit!
Meet Katherine Wu:
• eIMACS Computer Science alumna
• Webmaster for the Hopkins Undergraduate Research Journal
• Lab manager for The Center for Language and Speech Processing where she will be conducting research this summer
• Author of “Breaking Barriers in Computer Science,” soon-to-be-published in the undergraduate research journal The Triple Helix
• One of only 50 students selected from across the US and Canada to participate in the Google FUSE 2011 computer science retreat
Are you suitably impressed? We are. When Katherine found us, she hadn’t even taken a computer programming for beginners class. But she knew what she was looking for – a solid introduction to programming and individualized instruction that would allow her to excel at a faster pace through more challenging material. Well, Katherine just sailed through her freshman year as a Computer Science major at The Johns Hopkins University, taking mostly junior and senior level CS courses along with a graduate level CS seminar, and is already deep into her summer research schedule.
When asked to reflect on her first year at college and experiences so far in CS, here’s what she said: “I was anything BUT picky about club and academic experiences my first-year in college. If there’s something you’re interested in doing, there are no ifs-ands-or-buts about it; take the chance and do it! If anything, you’ll always form new relationships and learn something new. I look back, especially on my experiences in Computer Science, and all I can say is ‘Wow! It’s like a whole other world.’ I took my first courses with IMACS, and they were the ones who sparked my passion in Computer Science and supported me all the way up through taking the AP Computer Science exam and beyond. I’m proud to say that IMACS is not just your typical course provider, but a community that strongly cares about your personal learning and achievements. I think they are one of a kind.”
Lucky for Katherine, the foundation she built at IMACS gave her the skills and confidence to handle upper-division coursework. Lucky for us, she’s happy to share her story (and even her video bloopers) with you. Check out her video below, and follow her summer research adventure here.
If you’re a former or current student or parent and would like to share your IMACS story, email us at firstname.lastname@example.org.
When students or their parents think about career choices for computer programmers, they often think of software development and gaming. No doubt, working for Google or Blizzard Entertainment would be awesome, but not everybody will land one of those coveted jobs. Operations research and various areas of engineering may also come to mind as places to put your programming prowess to work. Less frequently, however, do people think of the financial industry.
Now before you go ranting that these smarty pants are the ones who brought down the global financial markets with their esoteric models that only a Ph.D. could understand, let’s skip that debate and merely point out this fact: programming jobs in finance are challenging and pay well. Ignoring them because you think they are on “the dark side” simply leaves you with fewer options. So let’s take a look at three areas of finance where computer programming is more than just a peripheral activity.
Computational finance. Computational finance was historically the domain of math and science Ph.D.’s who moved from academia to Wall Street (“quants”), especially as the use of financial instruments such as derivatives increased. The work of pricing these complex securities was roughly divided between the quants, who came up with the methodologies, and the programmers, who implemented the mathematical models. Over time, the focus has shifted to refining and optimizing the models. According to the Wikipedia entry on computational finance, “[A]s the actual use of computers has become essential to rapidly carrying out computational finance decisions, a background in computer programming has become useful, and hence many computer programmers enter the field either from Ph.D. programs or from other fields of software engineering.” Programmers are no longer solely relegated to the IT department, on call to do the bidding of the brain trust. The best ones are now part of that brain trust and are considered essential to financial institutions’ ability to maximize profits and minimize losses.
Algorithmic trading. What is algorithmic trading? Let’s go to the Wikipedia page: “… the use of computer programs for entering trading orders with the computer algorithm deciding on aspects of the order such as the timing, price, or quantity of the order, or in many cases initiating the order without human intervention. … A special class of algorithmic trading is ‘high-frequency trading’ (HFT), in which computers make elaborate decisions to initiate orders based on information that is received electronically, before human traders are capable of processing the information they observe [emphasis added].” So one set of humans (i.e., computer programmers) creates mathematical rules to replace a different set of humans (i.e., traders). And they’re paid handsomely for this disservice to their fellow man. Maybe you can see yourself doing this as sweet revenge upon those evil trader dudes who, some say, blew up the financial markets. Not such a bad idea now, eh?
Actuarial science. Finally, actuarial science. Wikipedia, don’t fail me now! “Actuarial science is the discipline that applies mathematical and statistical methods to assess risk in the insurance and finance industries. … Actuarial science includes a number of interrelating subjects, including probability, mathematics, statistics, finance, economics, financial economics and [trumpets, please] computer programming.” Who knew that figuring out when a given cohort of individuals will, uh-hum, kick the bucket could be so interesting? Well, as it turns out, one of our former students knows this well as he was able to pass all of the actuarial exams at a fairly young age and is currently the chief pricing actuary of a major global life reinsurance company. We’re pretty sure he’s done well for himself.
So if you have a knack for computers and want to explore where these talents might take you, don’t forget about the financial industry as a place that can provide a rewarding career. Try to make room in your class schedule for the programming courses you will need to put you on the right path. If you don’t have access to these courses at your school, think about taking online computer programming classes. If done right, learning computer programming online can be just as effective in preparing you for the next level.
Do you or someone you know use computer programming skills in a non-traditional field? Tell us about it.
(With apologies to Doreen Cronin, author of Click, Clack, Moo: Cows That Type)
There once was a stable of horses
Who thought it was time to join forces
And protest their labor
With more than just “neigh” for
A better job, advised their sources (i.e., the cows).
The farmer said, “What good are you
Except as my wagon-pull crew?
I’ll send you to IMACS
To learn more than syntax.
If not, then it’s off to be glue!”
(Unfortunately, our classrooms are not equipped for horses, so we directed them to our online computer courses at eimacs.com.)
No school had yet enrolled equine
In computer courses online.
They paid us in oats,
And we don’t mean to gloat,
But everything turned out just fine.
The horses got out of their jam;
They now build apps to filter spam.
So who do you turn to
If you want to learn to
Write your own computer programs?
Why, IMACS, of course!
We’re the ultimate source
To upgrade your personal RAM.
Do you have a clever (and family-friendly) limerick about math or computer science to share? Email us at info @ eimacs.com.
« Newer Posts