Slashdot is powered by your submissions, so send in your scoop

 



Forgot your password?
typodupeerror
×
Education

Journal Bill Dog's Journal: ideal computer science education 5

From the Bjarne Stroustrup/C++ Q&A article from earlier in the week, an old-timer opined something that I've also thought for a while, re: teaching computer science: "I think they should learn computer languages in the order that they evolved: assembler first, then FORTRAN, ..."

I think that would be a fabulous idea, although I'd start with machine language before asm. I'd also try to make this progression coincide as much as possible with a progression from lower-level to higher-level vis-a-vis the "bare metal". My asm class for my BSCS came third after a couple of Pascal "structured programming" courses, and seemed to be treated as just an oddball sidenote that had to be thrown in somewhere. And I think most students treated it as such. Because they had no reallly meaningful context for it. Then later in upper division for a required systems programming class we had to write a simulator for a fictitious CPU (instruction set), and then in the second half of the class an assembler for it. Good, but ill-sequenced.

At Bill Dog University, the undergrad CS program would proceed something along the lines of:

Lower Division (foundation)

CS 10 - Intro Circuits - Boolean logic, truth tables, logic gates, etc. -- i.e. the basic building blocks.
CS 20 - Machine Organization - Memory, busses, CPU's, I/O, etc. -- this gets the student up to the component level of hardware.
CS 30 - Machine Language - Registers, addressing modes, hex opcodes, etc. -- including creation of a simulator for running a program written for a fictitious CPU.
CS 40 - Assembly Language - (the stuff assemblers do for you -- can't remember) -- including creation of an assembler for the student's simulator.
CS 50 - C Programming - Memory allocation, looping, branching, pointers, etc. -- including in relation to what C syntax is translated into/equivalent of what asm.
CS 60 - Data Structures -- Let the student learn these along with getting more comfortable with C.
CS 70 - Algorithms -- (I always thought there was enough good stuff in these two (this and the previous) that they should've been split into separate courses for fuller coverage.)
CS 80 - C++ Programming - Object-orientation -- in relation to C. (It's my belief that if you can master C++, you can handle pretty much anything after that.)

Upper Division (depth and breadth)

CS 100 - Java Programming - "pure" object-orientation -- including some design patterns and other intermediate-to-advanced OOP. (In another time this would've been "Smalltalk Programming").
CS 110 - (some functional programming language) Programming - ?
CS 120 - Computing Theory - Automata, grammars, regular expressions, etc.
CS 130 - Computer Graphics - 2D, 3D, OpenGL, GUI's, HCI, etc.
CS 140 - Computer Networks - OSI model, network devices, etc.
CS 150 - Operating System Principles - processes, file systems, devices, virtual memory, etc.
CS 160 - Concurrent Programming - threads, IPC, synchronization, deadlock, race conditions, etc. -- with multi-core CPU's going mainstream, I think this deserves its own course nowadays.
CS 170 - Web Browser Programming - (X)HTML, CSS, DOM, JavaScript, CGI, probably PHP for the server-side templating system, etc.
CS 180 - Database Principles - SQL, normalization, constraints, triggers, transactions, etc.
CS 190 - Senior Project

A few comments on some absences:
* Compiler Construction - didn't (have to) take it, but that seems like very specialized knowledge, more appropriate for the graduate level.
* Advanced Databases - I did take this (in an undergrad course), and it was heavy math and theory, more appropriate for the graduate level.
* Software Engineering - I took this, but at least what was taught, as I recall, was glossed-over B.S. -- probably better for a grad degree program of its own.

Closing comments:
* All the typical math stuff that is normally required for CS is implied (I was just interested in listing CS courses), and in a sensible order, e.g. Linear Algebra (matrices) before Computer Graphics.
* I don't think Bill Dog U would require the physics that I had to take, or chemistry if some schools require that, for CS. I've been working professionally in computers for 13 years, and haven't once had to calculate magnetic flux.
* All the General Ed stuff that is normally required for a BS is implied. But I would say not as much choice. I had to choose a number from several categories, but within categories the sky was literally the limit. And it seemed like [rambling a bit off topic here, briefly] it was to funnel students into dept.'s to keep them (the dept.'s) alive. A smaller set of choices would be better, but more overview type/survey courses, hitting literature, geography, culture, politics, history, music, art, science -- things on Jeopardy -- i.e. towards a fairly overlapping common body of knowledge that all college grads could talk about/in reference to at parties and in other discussions. I.e. if someone wants to take, for example, something as obscure as Latin, or as specialized as 18th century French impressionist architects, fine, but it's not towards the G.E. requirements/doesn't get that person out of taking what every edjumacated person should have some passing familiarity with.

Edit: Kymermosst's response below, while we differ in many choices for an "ideal" CS program, made me realize that I actually left out something I think is very important. Security touches so many aspects of computers these days, that was an unconscionable omission, so I hereby add:
CS 185 - Computer Security - Firewalls, coding practices, common attack vectors, etc.

There are so many upper division courses now, this may lend itself more to a quarter system (10-week terms instead of 15 weeks) than a semester system. Or maybe science and engineering type curricula are just more realistically 5-year undergrad programs (as I recall some of the engineering programs at my alma mater required 18 unit course loads to get out in 4, and that's 18 units/semester of stuff far harder than what I took!).

This discussion has been archived. No new comments can be posted.

ideal computer science education

Comments Filter:
  • by tqft ( 619476 )
    My copy of Vol 1 of ACP is handy but I can't remember much - but isn't that why Knuth did MIX so people could understand this stuff to start with - otherwise why put in Vol 1?

    PS: would the person who borrowed my Vol 2 of ACP please return it

    PPS: Both McGills [so called] Technical Books and Borders in Brisbane don't have copies of ACP, and their staff have never heard of them. Won't be going back to those places for technical books in a hurry.
  • Comment removed based on user account deletion
    • No, you're not wrong, I was thinking the graphics class would be like for database principles in that it would cover what most everyone should know, and save the advanced stuff (such as what you might need to specialize in computer graphics, for game dev, say) to the grad level.

      But I think everyone should be familiar with some 2D and 3D geometry and how the computer displays things. I may be a bit biased as currently part of what we do at work is scientific visualization (and I wish I had taken a graphics c
  • CS 10 - Intro Circuits - Boolean logic, truth tables, logic gates, etc. -- i.e. the basic building blocks.

    Most of this will come from discrete math, which I'm hoping you left out as a "before you even start CS" requirement, and not accidentally. We had to take three quarters of it.

    CS 60 - Data Structures -- Let the student learn these along with getting more comfortable with C.
    CS 70 - Algorithms -- (I always thought there was enough good stuff in these two (this and the previous) that they should've been s
    • Re: Left-out stuff: You may not have read my footnotes.

      I may be guilty of a programmer-leaning CS program (as are, as you hinted at, probably most). You may wish to send your kids to Kymermosst U instead. :-)

      Some notable philosophies of Bill Dog U:
      * Here at BDU, we don't believe in weed-out courses.
      * Here at BDU, like other schools, it's not about what the student has interest/desire in, it's about what the university thinks the student should have some background in.

      Kymermosst U seems to have a UNIX emphas

Neutrinos have bad breadth.

Working...