Computer Science Education Around the World

Image

Source: illustrationsource.com

This post will compare the tactics of applying computer science to high schools in the United States, Israel, and Europe.

In the United States, there is no standard national high school computer science curriculum. In the fall of 2004, the Computer Science Teachers Association surveyed 14,000 high school computer science, programming, and application teachers and they provided the following findings. Many high schools that offer the Advanced Placement computer science course teach the class at a lower level than the AP curriculum suggests. Most of these courses have a greater emphasis on programming, and do not always cover the hardware, ethics, graphics, or web development topics. Courses that focus on applications are less likely to cover programming and vice versa. Along with this, teachers believe that students do not take computer science courses because the students cannot fit them into their already tight schedules. Also, teachers are not informed of the rules concerning the content of the curriculum, how to get certified how to teach these courses, and find the “rapidly changing technology” a serious challenge in teaching computer science.

In Israel, computer science had been an autonomous subject in the high school curriculum for almost four decades. When the curriculum was first designed, it mainly focused on programming but since 1991, the curriculum was modified to put more emphasis on principles and theoretical aspects. The program has a basic and advanced level and includes mandatory Fundamentals and Software Design modules and elective modules which include Theory and Applications. This program was made successful because the government planned the implementation process and received much support. This support included the development of course materials (learning materials for students and corresponding teacher guides) and an intensive in-service teacher training program.

In Europe, every country has a different curriculum policy. A number of countries have given up on the computer science idea and instead are having more of an Information Technology focus which is less rigorous and less embedded in science. In 2004, a study of twenty European economic Union member states as well as Bulgaria, Iceland, Norway. and Romania showed that studies of information and communication technology is a part of the mandatory curriculum in the upper secondary level in all countries. How the curriculum is implemented, however, differs in each country. In Ireland, students do not study programming in secondary schools; in Finland and Italy, information and communication technology is taught as a tool to support learning in other curriculum areas; and in Poland, all students study informatics in primary and middle school. High school students here also have to take a mandatory Information Technology course that includes topics such as networks and multimedia tools for managing information.  

As one can see, our country can learn much from other countries about how to incorporate computer science courses in our high school curriculums. These countries show that it is not an impossible feat and would benefit our high school students to a great extent.

 

 

Source: CSTA Curriculum Improvement Task Report – Computer Science

Raspberry Pi

Image

Raspberry Pi

After my presentation about implementing computer science courses in high schools, someone mentioned the Raspberry Pi and I decided to do some research on it. The Raspberry Pi is a credit card sized computer that plugs into your TV and keyboard. It is a mini PC that works just like a regular PC and also plays high definition video. The best part about this computer, however, is the price. The Raspberry Pi comes in two models; Model A is priced at $25 and Model B is priced at $35. The difference between the models is that Model A has 256MB RAM, one USB port and no Ethernet, while Model B has 512MB RAM, 2 USB port and an Ethernet port. This device was created with the intention of allowing school children the opportunity to learn computer programming at an affordable rate. This works perfectly with the idea of my technical report because we want everyone to have the chance to learn about computer science. By purchasing Raspberry Pi computers along with their external accessories, schools would save much more money than they would if they bought regular computers for their students. This is a major plus for schools in every financial situation.
What I like the most about this device is that the company that created it is focused solely on the educational aspect. The company is currently in the process of creating educational material that will further aid students in learning how to program. In their website, Raspberry Pi states, “We’re working with partners to get software materials developed, as well as with the open source community. Computing at School are writing a user guide and programming manual, we’re aware of a few books being planned and written around the Raspberry Pi, and others have already started to produce some excellent tutorials including video. We’re also working with partners to use it as a teaching platform for other subjects, including languages, maths and so on. Once we launch, we hope that the community will help bodies like Computing at School put together teaching material such as lesson plans and resources and push this into schools. In due course, the foundation hopes to provide a system of prizes to give young people something to work towards.”
I hope to include the Raspberry Pi in my report because it is a cost effective way to get students to learn how to program and provides another reason as to why students should be able to learn about computer science while they’re in high school. It would be very effective if all high schools that could not afford full computers for their students to own Raspberry Pis so that they would have the opportunity to learn how to program and have this greatly necessary skill before they enter college.

Computer Engineering in Video Games

Image

Computer Engineering in Video Games

The inspiration for this post is the fact that my roommate is sitting next to me playing video games on her computer. Video games are virtual games that are played on an external device. Video games heavily rely on the hardware and software produced by computer engineers.
The hardware aspect of things includes game controllers and systems which rely on hardware design, control systems, embedded systems, and sensors. There are four different types of games which involves different hardware to cater to their individual needs. These types are: PC, console, handheld, and arcade games. The hardware associated with these are computers, console controllers and headsets, screens for handheld games, and an electronic device that is typically designed to play only one game
The software aspect of things includes artificial intelligence engines and high speed graphics. One can see the development of graphics by noticing how realistic video games look these days. One interesting software aspect of software in video games is the cheats and glitches that can be performed in video games. Cheats are placed in games by programmers wherever they feel like it. The cheats can make the game seem easier, make a character stronger, or just create amusing features. Glitches, on the other hand, are errors that the programmer overlooked. Glitches can range from minor graphical errors to serious bugs that can delete saved data or cause the game to malfunction. In some cases publishers will release updates, or patches, to repair glitches. Sometimes a glitch may be beneficial to the player. These glitches are called exploits.
To be able to work on video games, or become a video game programmer, one simply needs a degree in computer science or computer engineering, with classes that focus on game design or graphics.

The Hardware Side of Things

In this post, we will take a break from talking about the software side of computer engineering and take a closer look at the hardware side. As defined in computerhope.com, hardware is a device that is physically connected to your computer or something that can be physically touched. Examples of these are a CPU, RAM, hard drives and other products. Software could not be accessed without hardware. This post will describe the hardware components that computer engineers work with.

Image

Source: computerhope.com

A CPU, or a central processing unit, is responsible for handling all instructions it receives from hardware and software running on the computer. As shown in Figure 1, CPU chip is usually in the shape of a square or rectangle and will have one notched corner to help place the chip into the computer properly. On the bottom of the chip are hundreds of connector pins that plug into each of the corresponding holes on the socket. The two primary components of a CPU are the Arithmetic Logic Unit (ALU) and the Control Unit (CU). The ALU performs mathematical, logical, and decision operations while the CU directs all of the processors’ operations.

RAM, or random access memory, is a computer storage location that allows information to be stored and accessed quickly from random locations within DRAM on a memory module. Another type of memory, ROM, or read only memory, is a type of “built-in” memory that is capable of holding data and having that data read from the chip, but not written to. The difference between the two is that RAM is a volatile memory and requires power in order to keep the data accessible, if power is lost all data contained in memory lost while ROM is non volatile and the exact opposite of RAM.

Along with the internal hardware, there is also external hardware. The most familiar example of this is the monitor. The monitor is a video display screen and the hard shell that holds it. In its most common usage, monitor refers only to devices that contain no electronic equipment other than what is essentially needed to display and adjust the characteristics of an image. Like most TVs, the computer monitor has a CRT (Cathode Ray Tube) that is found inside the computer monitor as shown in Figure 2. The CRT is the main component and most expensive part within your computer monitor.

One last example of external hardware is people are familiar with is the keyboard.It is one of the primary input devices and looks very similar to the keyboards of electric typewriters, with some additional keys. Keyboards allow a computer user to input letters, numbers, and other symbols into a computer and is what allows you to write e-mail and is what you used to visit this web page. Figure 3 shows an example of a Saitek keyboard with indicators pointing to each of the major sections of the keyboard.

These are just a few of the countless number of hardware components that computer engineers work with. Many engineers forget that computer engineering is not just about programming, but also about the devices that run the programs.

Is Programming Worthwhile?

Image

This post is somewhat related to my last post. Many high schools do not offer programming classes partly because students do not show the interest in taking the classes. “Programming” has somewhat of a negative connotation to it; it just seems too long, too hard, and too frustrating and this is not what high school students want to deal with. What the students do not know what exactly programming is or the benefits of programming.

Programming is a process; it involves writing, testing, and debugging. It also involves intense thinking throughout the entire process. Students also think that learning different programming languages is overwhelming. Though there are hundreds of different programming languages, they all have the same basic concept. The idea behind each language is the same; it’s mostly just the syntax and the uses that are different.

Programming comes with an abundance of benefits. The most important of which, I believe, is the problem solving aspect. Every time you write a program, it is to solve a problem. This problem may be an assignment one receives in class or a means of improving the lifestyle of computer users. Because you are problem solving when programming, you learn how to become a better problem solver and apply this to other aspects of life.
One also becomes a better planner with programming. The programmer has to plan out exactly how he or she is to go about writing the program and think about each and every single line of the program. One must analyze the output and understand how to implement a program to get there.
Because one program can be written in many different ways, the programmer becomes able to see different perspectives. When people do not understand how there are many ways to write a program, I like to describe it in this way; when a teacher assigns a topic for students to write an essay on, each student writes about the same topic but every essay will be unique. In the same way, every program to a certain problem will be unique. How does this apply to having different perspectives? My current programming class directly applies this. Each homework assignment in the class requires a certain complexity limit. What this means is that even though there are a million ways of writing a certain program, you have to submit the simplest version so you learn to become a more efficient programmer. If your program does not meet the complexity limit, you have to see if there is another way of writing the program in a simpler manner. The best way to summarize this is that programming forces you to act with an open mind.
The most useful benefit is the fact that there are so many job openings that require programming experience. We are living in an increasingly technological world. Whenever you go on a website, someone programmed and graphically designed the webpage; whenever you use your phone, someone programmed the firmware that went into the phone; whenever you watch an animated movie, someone programmed every single aspect of the movie. Even if you weren’t looking for a job in the technology field, programming can help your everyday life. Many people change the settings on their phones and computers to cater more to their own personal use rather than for the use of the general public.

Source: http://norvig.com/21-days.html

Computer Science in High Schools

Advanced Placement courses in high schools are ways for students to learn more about a topic that they’re interested in. Most students take a basic level course, become interested in it, and then take the advanced placement course for it. What happens, however, if a school offers an AP course but doesn’t offer a basic level of the course so that students can get a feel for what it is? Many high school students see “computer science” or “programming” as a difficult or even impossible subject so only the students already interested in the subject, not those that develop the interest, take the AP course. The figure shows that in the year 2010, over 100,000 students took the AP Calculus, Biology, and Statistics exams each while less than 15,000 students took the AP Computer Science exam (data received from collegeboard.org). This seems like a contradiction because as the years have passed, the amount of students taking the AP Comp Sci course has declined while the amount of IT jobs available and created have increased. The failure to introduce computer science classes in high school, or not enough classes, has followed students to their college careers. According to John Seng, a well known computer science professor at California Polytechnic University at San Luis Obispo, about 60% of students fail the introductory computer science class at the university. This is not because of the rigor of the class, but because few students have prior programming experience. Most introductory courses do not require previous experience, but the knowledge would be beneficial. Also, there is a major gap in gender difference among the students taking computer science courses; with only 19% of the students that took the AP Comp Sci test in 2010 being women. The only way to bridge between these gaps is to introduce more computer science courses earlier on in students’ educational careers.

Image

Source: Author

The common misconception about programming languages is that it is intense, difficult, and hard to comprehend. Contrary to this opinion, computer science is a subject area that is essential in today’s industry. From fields such as English and Anthropology to Biology and Chemistry, everything is becoming computerized and the ability to use the computer comfortably is becoming necessary. The principles of computer science, logic and discrete mathematics, are based on Western philosophical thinking and these skills help a student in every area of study, thus preparing students for the teaching style of the college curriculum. Not only does the logical aspect of computer science benefit students, the process of learning a new language also promotes mental exercise and proficiency. High schools in California have foreign language requirements to engage students linguistically and globally by learning about the area where the language originated form. Why can’t this be implemented for computer science? Procedural (traditional) programming versus object-oriented programming is similar to the different ways language is written/spoken and learning about the different parts of the computer and its uses is similar to learning about the cultures of a country. These attributes are essential for the development of young minds that will eventually join the workforce of our nation.

Cyber Warfare VS Electronic Warfare

Cyber warfare is Internet-based conflict involving politically motivated attacks on information and information systems. These attacks can disable official websites and networks, disrupt or disable essential services, steal or alter classified data, and cripple financial systems. 

Electronic warfare is any military action involving the use of electromagnetic and directed energy to control the electromagnetic spectrum or to attack the enemy. The three major subdivisions within electronic warfare are: electronic attack, electronic protection, and electronic warfare support.

It is easy to mix up these terms, but it is important to know that they are not the same thing but go hand in hand. What is nice, however, is that there are different companies that represent these different types of warfare.

The highly known defense company Raytheon (http://www.raytheon.com/capabilities/ew/) deals with electronic warfare while the not so known but equally important Chesapeake Technology International (http://www.chesapeaketechnology.com/) deals with cyber warfare. When I spoke with a representative from Chesapeake Technology, he told me how closely the two companies work together and how their technologies complement each other. He also told me that once you know how to deal with one type of warfare, then its relatively easy to learn how to deal with the other type. This intrigued me because it gives me even more job versatility.

Aside

The last two posts have been my initial research for Computer Engineering. The link describes the occupation as “Research, design, develop, or test computer or computer-related equipment for commercial, industrial, military, or scientific use. May supervise the manufacturing and installation of computer or computer-related equipment and components.” After reading through the website, and the tasks that need to be done in the field, I was happy to know that everything that I learn in college will directly be applied in my career. I never have to think, “When will I ever use this?” in a class because everything I learn will eventually come in handy. I am currently taking a systems programming course at Cal Poly and there is literally a job in the CPE field called embedded systems programmer so I know everything I learn in this course will one day be used again. The picture I posted is also from the same website. This shows the wages computer engineers were making throughout the United States and in California in 2011. Obviously the more education you have, the more money you make, but even with a Bachelor’s degree in Computer Engineering I know I’ll make more money than I’ll even know what to do with. 

I attended Cal Poly’s job fair this past week; I wasn’t seeking out jobs or internships, I was mostly just looking for more information on the jobs that could be available to me. A few companies talked to me about how they fight and/or control cyber warfare. What this means is that workers at these companies track down devices that could detonate a bomb, for example, and then jam the device electronically or create static to prevent the bomb from going off. I became very interested in this and I was told that the title for this job in the CPE field is called a combat systems engineer. I will do more research on that and post my findings at a later time.