Where does Computer Science Fit?
Computer science is struggling to find its place in high schools. CS is relegated to a "vocational" course choice often. This means that college bound students often are not exposed to CS. When it is not vocational CS is often an elective. This students have to have a strong interest to draw them to choose CS as an elective class. In additional other more traditional electives draw students away from computer science. There is a lack of unified curriculum, resources and standards in computer science education. This means there are changes happening but in pockets and unknown to others. Right now only 14 states have adopted the ACM and CSTA standards for high school computer science and only 10 allow it to count toward graduation. Only 1 out of every 10 schools teaches programming classes and most schools don't have computer science as a a required part of their curriculum. Places which already have CS programs are getting cut because of budget issues. School administrators don't view computer science as a necessary skill for students to be learning. In addition Computer Science is often confused with other technology fields. Computer science loses students to scheduling conflicts since there is often only one section offered and they conflict with classes students need for college.
Current education is very unforgiving to trying new things in schools. No Child Left Behind has everything tracked and scheduled and this makes it difficult to find a place for computer science. The number of classes required for students is already high and adding new required classes is almost impossible so getting CS to fit in means helping people to see it as a good substitute for math and science classes.
What about Computers and Resource issues?
Under Construction
Getting Good Teachers?
Often computer science teachers are qualified for either teaching or technology, but do not have training in both. In addition choosing to teach computer science as a graduate from a computing related major is a difficult choice because it means a starting salary around half of what you would have made at a tech job. So how do we find and create more trained and qualified teachers? There is no licensing system for Computer Science teachers. Thus where and when are teachers trained to teach CS is a major issue of concern. Right now a lot of the professional development development for teachers is coming from colleges. Most of the schools providing professional development are doing so in isolation and not connecting with other schools offering professional development. Most of the professional develop is during the summer without a lot of follow up. Most of this information comes from a study done by CEMSE and University of Chicago's Urban Education Institute. They suggest that we need more focused professional development. The study can be found at OS4CS.
How to Fix the Negative Perceptions of Computer Science?
There are unfortunately a lot of negative perceptions of Computer Science. These perceptions include outsourcing of CS jobs in the media, CS is not fun and is boring, CS is too difficult for most people, CS is not important if you don't want to be a programmer, CS is for men, CS people are antisocial, CS does not require creativity, CS is something you have to have natural talent to be good at, CS is just making games or computer application. These are definitely issues for Computer Science. The best way to deal with this is to try and talk to people about What is Computer Science? and use the Strategies For Getting Students page as a resource on how to change some of these perception.
Where does the change start?
One of the huge issues in computer science education is where does the change start. Most people keep pointing to somewhere else waiting for a change to happen. Unfortunately there is no perfect place for computer science education to start. As you can see in the web diagram that all the pieces are connected and each person should make an effort to change their area because that will affect other areas. In addition we need to continue to push for changes in other areas especially policy. However we can't wait for those changes before we start making changes in other areas.
Dealing with CS as an fast pace and changing discipline.
The field of computer science is constantly changing. Languages are constantly improving. These constant changes are hard for teachers to keep up with. When teachers have to learn a new language or system it takes time and training. In Computer Science these updates can happen as fast as every couple years. In order for teachers to feel confident and capable in the languages they are teaching they need a deep understanding of the material they are presenting. One suggestion to deal with this is trying to create a common language for teaching
Which Language Do We Use?
There are lots of languages out there in Computer Science. Although not every language in existence is in consideration for classroom learning there are still many languages that schools use to teach new students to Computer Science (as can be seen on the Languages page). There is a lot of debate among computer scientists about which language is the best to teach students. Some believe that students should learn a language that is used in industry because it helps them feel more connected and capable. Also it means that the time spent learning it is more beneficial down the road. On the other side are the people that think that students new to Computer Science need a different type of language, one that was created for learning. The language will hopefully help take away some of the overwhelming amount students are learning when they first start Computer Science.
Teachers try to figure out how much to isolate students at the lower level from the massive systems usual to CS. Isolation means restricting students to a certain area of focus and leaving out or doing some of the other leg work for them. Isolation is necessary however for how long and to what extent is still debated. One complaint about isolation is that, when isolated, students are not working with real world practical programs so they play with toy programs that are not as exciting and make them see a huge gap between what they are doing and what actual computer science is when thats not actually true. In addition if we keep students isolated they never really learn how real world programs work, with many pieces and parts interacting together to make an entire system.