As a couple of my older kids are now of college age, and this is making me confront the issues with college ... particularly with regard to computer science (which is the field I am in)
Ummm. Weren't the academic degrees that
you earned actually in
Classical Languages?
I'm horrified by the cuмulative effect that I expect that the trendy "Learn to Code" classes, books, and videos will have in driving down programming skills in the U.S.A. I strongly doubt that the
skullsful of mush will be taught anything on algorithms, program structuring, data structures, and overall software engineering.
So I'm unsure how a hypothetical student of yours would get the
breadth of
education that would be routinely expected of any graduate awarded a
bachelor of science degree. But that won't stop me from diving in to draft a curriculum anyhow. Off the top of my head:
I'd expect each student to be equipped with a single-board computer (SBC) to unify the platform, thus facilitate grading, for various projects assigned in various classes.
• Predetermined extensive use of
C and
C++ (they would not be my choices for learning programming, but I realize that I don't get a vote).
• Include entire more-or-less separate courses on algorithms (with serious attention to execution speed of implementable alternatives) and their data structures (esp. for vectors, linear chains, and trees, e.g., finite-state-machines, hash tables, and file directories) [∆].
• Include entire more-or-less separate courses on system & program organization and overall software engineering (e.g., must everything
really be an
object, and when will mere
modules suffice?).
• Include
manual storage management, including buffers and their competent filling, which programmers seem
not to know how to do anymore; their bugs (
not "glitches") have enabled tons of malware in recent decades (e.g., Adobe Reader, Javascript).
• Include data organization & mining; might there be courses in Library Science that would be valuable for perspectives on organizing large amounts of data?
• Include other languages as separate courses that are
really really not "C-like" (contrary to nearly-ignorant descriptions touting new languages as such) or that rely on different styles or paradigms; the specifics of my choices need not be argued in this reply.
• Include computer architecture and
virtual machines (notably the Java V.M.), esp. for students entranced by compilers; as an issue of execution performance, students need to understand how virtual instructions translate to real machine instructions.
• Include computer networking, focused on TCP/IP via Ethernet, including routing.
• Include computer server design & configuration, esp. load-management and proxies.
• Include computer security, revealing as much of black-hat techniques as seems appropriate for students to learn how to defend their own servers.
• Optionally a compiler course, focusing on grammars (the latter being how programmers learn the syntax of newly mandated languages in the real world [×]).
• Include enough statistics to recognize "lying with statistics" and to do testing analysis (e.g., each student needs to understand the reasons that the
p-test has lost the scientific respect it once had in statistical-based studies).
• Optionally a
numerical methods & anaysis for the students who'd love to be hired to write or maintain math run-time routines.
• Include
mathematical logic, notably propositional logic and predicate calculus, enough for elementary understanding of logic-gate-level hardware designs; require students to build something at such a simple level, e.g., with FPGAs or bit-slice processor chips.
• Optional linear algebra.
• Delete calculus & differential equations.
• Optional physics for game-programming; calculus-free approaches might suffice.
• Delete chemistry, but that might disqualify employment in the pharma industry.
• Delete foreign-language requirements; nearly everything worth reading in computer science since World War II will be published or posted in English, the exceptions being the Russians (e.g., recent Zonnon programming language) and possibly the French (an effective way for their research to be
not noticed, while the surrounding E.U. countries publish or post in English [⚔]).
• Include business writing & stand-up presentation, and maybe also formal debate, so that students diagnosed within the newfangled
autistic spectrum can't continue to avoid face-to-face human interaction by taking refuge in their computers.
Oooh! Cruel! Bad Gator, bad!• Delete psychology & sociology.
Hmmm. I've identified practically
nothing in the liberal arts, so I've failed to resolve the issue of how to justify granting
B.S. degrees, but it'd be quite a strong program for a multiyear
trade-school diploma. As readers might imagine, I haven't even attempted to tabulate the academic credits for my hypothetical courses.
Either way, I envision lots of
prep time would be required from the instructors. Perhaps adequate
textbook-equivalent
source material can be found on-line in the public domain, but publishers don't abandon their copyrighted investments easily. I can write from experience that conscientious grading of programs for their approach & organization, not simply for getting "right answers", is quite time-consuming, but even more important as feedback to students in any classes that have no bricks-&-mortar meetings.
--------
Note ∆ : There's a book
Practical Algorithms in C (or somesuch), teamed with one for Pascal.
Note ⛎ : The inventor of Python admitted in an interview (on the Web somewhere) that he never intended it for teaching nor as anything more than as an alternative to the quaint unix *sh script languages. The use of inden(ta)tion by Python to express the extent of execution control structures (and maybe scope?) will provide needless frustration to students alreading dealing with more than enough new things..
Note × : You don't expect your employer to exempt you from ongoing project schedules and provide you with a course on company time, do you?
Hah, ha! Time off for employee "technical development" is
sooo 20th Century![/b]
Note ⚔ : The notoriously self-important French wouldn't have had even the slightest of chances to publish their Ada docuмents in French; their contract to develop Ada was awarded by U.S. DoD.