Slashdot Mirror


Ask Slashdot: What To Tell High-Schoolers About Computer Science?

First time accepted submitter lsllll writes "I got drawn (without my intention) into three 20 minute sessions, talking to high school students about computer science and programming, and am wondering what are some of the things I should talk to them about. I have previously done the same thing for a forty minute period, and all the students wanted to talk about game programming. My only game programming experience dates back to the late '80s and programming a few games (some which ran on top of Novell's network) in Turbo Pascal. Since then I have done lots of database design, web interface programming, and systems configuration and integration. I am pretty fluent with Windows and Linux, but my contemporary programming skills are somewhat limited to Coldfusion, PHP, Javascript, SQL and bash scripts. Should I talk to them about different aspects of computer science, what it's like to work full-time in the computer industry, or do I make the sessions just question and answer, since 20 minutes might not allow me to talk and do question and answer?"

13 of 315 comments (clear)

  1. Tell them the truth... by NFN_NLN · · Score: 4, Insightful

    I got drawn (without my intention) into three 20 minute sessions, talking to high school students about computer science and programming, and am wondering what are some of the things I should talk to them about?

    Warn them that a career in almost any area of computing science will be high stress, high workload and have few long term options as they age. Apologize on behalf of society for a system that doesn't value real work and instead tell them to think of their future and what makes most sense. Then steer them towards jobs in high finance and save them a life of grief.

  2. Programming? by mmcuh · · Score: 4, Insightful

    If they want to know about game programming, then obviously they are at the wrong talk. Programming is not computer science.

    1. Re:Programming? by Missing.Matter · · Score: 4, Insightful

      Understanding how the chips inside work, and how the numbers are moved, stored, and processed is neat

      No that's not just "neat" it's the essence of computer science. Algorithms, information theory, theory of computation, computer architecture, AI, robotics, etc... all these aspects of computer science I can study and research without touching a programming language. I'd say programming is necessary most applied computer science, but CS is a very rich field without it.

  3. Re:Tell them this by Arancaytar · · Score: 3, Insightful

    Work experience and no degree

    The headline said "computer science", which is an academic discipline and therefore all about degrees and not at all about work experience.

    However, it is true that many former programmers decide to acquire a degree in computer science, and many former computer scientists decide to start a career in programming rather than finishing (or after finishing) a degree. Both fields have their advantages and can be quite lucrative and rewarding, but mistaking them for each other is an error.

  4. Re:Tell them this by Groink · · Score: 5, Insightful

    If they are passionate about it it is a fun and rewarding career, with lot's of job opportunities.

    They won't get outside much, they will need to stay active after work to not get fat, and that programmer != sys admin.

    I'd especially tell them what it ISN'T. There are a lot of misconceptions about what computer science actually is and a lot of is perpetrated by well-meaning adults who tell kids "go learn about technology" and glom computer science into that extremely broad category of "tech".

    I work for a youth organization, and I always have kids watching what I do and going "Cool, can you teach me how to hack?" Invariably, they get disappointed when I show them how to ssh into a remote machine and recompile the kernel instead of breaking into a DoD mainframe and launch missiles at China or something. And anytime I do try and generate interest in actual programming, it is hard to get past the "How do you program games?" point. Let's work past printf and scanf first, junior.

    It's a toughie. IANACS, but I've taken programming and numerical theory classes and it can be tedious and detail oriented. It's hard to put that up against a generation who has a lot of instant gratification when it comes to their experience with anything technology related.

  5. Re:if they aren't asking: nothing by rrossman2 · · Score: 4, Insightful

    That's a good point.. most people think you just go and flush, and don't realize how much stuff goes on behind the scenes. Planning/designing of the plant, permits required to build (since most are built along rivers in flood zones, so include the impact studies for flooding, etc), grinders inline to chop up the solids, pumps to push the sewage along and up hills, the straining tanks, chlorination and UV to kill germs, controlling and monitoring the particulate outputs, etc, etc.

    It's much like programming. Those who don't know think there's not much too it.. but there is quite a bit that goes into making a good program. The initial idea, planning, finding out what regulations your project must comply with (HIPAA, SOX, etc), designing the flowcharts, settings time lines, cost planning, marketing, etc, etc.

    So, as much as you were trying to be a smart ass, you inadvertently brought up a good example.

  6. "Computer Science" is a misnomer by bgat · · Score: 4, Insightful

    I doubt a high-school student really cares about the "theoretical foundations of information and computation". As you suggest yourself, your audience is more interested in the things they can DO with computers--- which is more about Engineering than Computer Science.

    I suggest that you spend the first 5-10 minutes helping your audience see the fact that they are literally surrounded by computers, and that SOMEONE needs to learn how to program them. The real excitement in computing is found in embedded systems, not games or tablets. But unless you get people to see all these invisible computers, they have no idea that it's a viable and meaningful career choice.

    Then give them a demo of an Arduino, preferably one connected to the guts of an R/C car or the like. Something tangible. Of course, if you can't do this yourself then you have an obvious skills gap that needs to be addressed.

    After that, leave the rest of the presentation to your audience. You will not have any trouble filling the time allotted, I assure you.

    --
    b.g.
  7. That CS is not "programming" by cjonslashdot · · Score: 3, Insightful

    That "programming" is merely the current paradigm for computing; and that even the term "computing" might become obsolete in not too long. That computer science should be about tackling the hard problems and putting their solutions into practice, including how to create reliable and trustworthy (secure) systems, how to engineer and deploy systems quickly, how to design flexible systems, how to design usable systems. Hacking out programs is not "computer science" and should not be confused as such. It is merely "hacking".

  8. Dilbert, Javascript, PHP, Dilbert by Will.Woodhull · · Score: 4, Insightful

    Yeah, put together an arsenal of Dilbert cartoons. Use them to season the presentation-- especially effective when you can put an appropriate one on the screen in (partial) response to a student's question.

    Lead off with a Dilbert cartoon. Then spend the first half of the first session doing a general presentation on Javascript and PHP, how they fit together, how much they influence the student's lives, and how students could get involved in using them. Be as interactive as possible. Show a lot of code snippets but keep the discussion at about 10,000 feet: no detail, but low enough to talk about the similarities and differences between the languages. Basically use the server - browser as a concrete example from which you can discuss the larger issues of security, conformity with conventions, dealing with weaknesses in a language, etc, etc.

    Use the last half of the first session as a discussion session, with you asking them what topics they would like you to talk about in the next two sessions. Give them a list of general topics that you could talk about and encourage them to hash it out amongst themselves. Possibilities include design and implementation issues, debts incurred during schooling and salaries and job security, dealing with PHBs and other external job pressures, handling collaboration issues. Use the results to figure out what to do with the following sessions.

    If you run into dead spots, put up a Dilbert cartoon and try to get some discussion going about it. So go in with maybe 100 or so cartoons on tap, with the intention of showing only a few as part of the presentation but with the rest a click away, to be brought in as needed.

    Handouts: No handouts in this day and age. Give them access to a web page written by you for this presentation that has links to basic tutorials on Javascrpt and PHP, and to more material on the subjects you choose to cover in the 10,000 foot overview. Get the student's input on what kinds of things should go on this web page (it should be working by the last session, but it does not have to be finished before then).

    An experienced teacher who knows their subject and their students will need 40 minutes to prepare for each 20 minute session. You know the subject, but you do not know the students and presumably you do not know how to teach (or you would not have asked Slashdot for input). So give yourself an hour to prepare for each 20 minute session, and use feedback from the first session to shape the second and third sessions.

    Let us know how this goes.

    --
    Will
  9. CS != Programming != IT by MpVpRb · · Score: 4, Insightful

    Simple guide..

    Computer science = an academic discipline that explores the theory and limits of computability. Hard to get a job unless you are really good, and at least a little lucky.

    Programming = somewhere between an artform and an engineering discipline, can turn into a deathmarch of long hours.

    IT = maintenance, troubleshooting, helpdesk, market research, vendor negotiation, corporate politics, high stress, even longer hours

    Yeah, they all involve computers, but in practice are totally different.

  10. Re:Tell them this by sneakyimp · · Score: 4, Insightful

    Telling them that programmers make good money is definitely a way to generate interest. Computer Software Engineers make about twice the average salary in the United States and salary growth has been consistent for years. It probably wouldn't hurt to point out some of the folks who have made a fortune in the software business.

    I wanted to program games when I was about their age and still do. I remember that I found the prospect of learning a language quite daunting and didn't understand why all the cosine/sine/tangent functions were necessary. Having since programmed some crappy little games, I realize that the motion of objects on a screen is all about trigonometry or geometry. Had someone explained to me back then why I would need all those weird mathy functions, it would have done me a great service I think. Uh, I'm rambling. I guess my point is that math is extremely helpful when programming games. You might want to also explain how stuff like databases or other technical stuff are really important and useful too. For example, storing high scores (or inventories of weapons/armor/whatever) are easily accomplished with a database. If you spend some time explaining why they have to learn the "boring" stuff by giving examples of how it's used, they might be more inclined to slog through it to actually become a game programmer.

    Another thing they might find extremely useful to know is what technologies might get them started without having to shell out money for an integrated development environment or a server. For instance, all you need is a browser and a text editor to start working with HTML and Javascript. If they want to write a game, perhaps you could demonstrate some simple code that listens for keystrokes and moves a DIV tag or image around the screen.

    And lastly, you might want to point out how there's a huge difference between being a computer scientist and just building websites for a living. It can be a simple vocation or it can be an abstract, theoretical endeavor.

  11. Re:Don't go for gaming. by The+Archon+V2.0 · · Score: 4, Insightful

    Wouldn't it be more efficient to have the machine do those scripted tests instead of a human?

    Building a robot to open and close a DVD tray for 16 hours a day that signals when the tray fails costs a good bit of money, requires maintenance, and will ultimately be made redundant and never used again.

    Building a program that plays a game nonstop for 14 hours because a bug only manifests in hour 15 would be a coding challenge more complex than the game itself.

    Meanwhile, there's thousands of people who will work minimum wage and do the same thing in the vain hope that this is the way to become a developer. And when they break or obsolete, you just get rid of them and replace them with a new human, no extra costs.

  12. Re:Tell them this by Reservoir+Penguin · · Score: 3, Insightful

    I'm sorry but you are doing it wrong. There are many approaches to teaching and for younger kids it's not necessary to start with such formal fundamental things. I learned English as a second language not by first learning what a verb is and what tenses there are but by reading websites and watching movies.

    There is nothing wrong or impure about showing kids a python or basic based easy to use development environment, teaching them some basic operators and letting them get immediately into creating games.

    --
    US-UK-Israel: The real Axis of Evil