TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Why are most CS programs so bad at teaching programming as a skill in itself?

25 pointsby newsoulover 2 years ago
Before people start pointing out that &quot;CS is not programming&quot;, let me say, I am well aware of that. I am not saying a CS program shouldn&#x27;t have subjects like Discrete Math, TCS, Compilers, Type Theory, etc. But along with all that why not teach them the skill of &quot;good programming&quot;. By that I don&#x27;t mean only syntax of popular languages. I mean the art of solving problems using programming languages.<p>All I am saying is that majority of the undergrad population will be employed as a coder somewhere directly or indirectly. Very few people will go to grad school. Then why do we just touch upon programming in most schools? There are schools where a typical undergrad Algorithms class has no coding assignments. Ofcourse there are schools where there are courses with extensive programming requirements. I am not talking about those. Those are exceptions.<p>Just as an analogy, can a person majoring in architecture not do drawing or designing? Even they have courses that teach principles. Then why are CS programs so practicality averse? Why not accept that programming is a good and powerful tool and like any other tool, the mastery of it can be taught (through guided practice and not only lone practice). Lone dedicated practice is important. But someone who has enrolled in college can expect guided practice from their program. Don&#x27;t say, that it is the job of companies where they intern to teach them to get better at programming? What legal or moral obligation do they have to perform that as a duty?<p>Is it because most academicians are bad programmers (it may be a fact, nothing wrong in that, don&#x27;t get offended, I&#x27;m just asking)? Or are there other reasons.<p>There will be people who will point out the exceptions to my topic. I am very open to hear about those experiences too. Maybe we will get to know about some great teachers, books, courses, etc.

18 comments

debanjan16over 2 years ago
Ah! This question which offends as many people as it pleases (because it is a correct question).<p>Some people in academia are actually trying to solve this issue. You may look at:<p>1. How to Design Programs : <a href="https:&#x2F;&#x2F;htdp.org&#x2F;" rel="nofollow">https:&#x2F;&#x2F;htdp.org&#x2F;</a><p>2. Data-Centric Introduction to Computing: <a href="https:&#x2F;&#x2F;dcic-world.org&#x2F;" rel="nofollow">https:&#x2F;&#x2F;dcic-world.org&#x2F;</a><p>3. A course based on the above book: <a href="https:&#x2F;&#x2F;learnaifromscratch.github.io&#x2F;software.html" rel="nofollow">https:&#x2F;&#x2F;learnaifromscratch.github.io&#x2F;software.html</a>
评论 #33639383 未加载
peruvianover 2 years ago
The people teaching in CS departments aren&#x27;t interested in nor are knowledgeable in practical programming.<p>They&#x27;d need to hire people with experience in software engineering, but those people are busy making $200k a year.<p>My college had a couple night classes taught by people who worked in the industry and were semi-retired — I learned a lot of practical advice from them!
评论 #33641181 未加载
wsgeorgeover 2 years ago
Maybe the problem is that it&#x27;s called &quot;Computer Science&quot;? I&#x27;ve always imagined that Computer Science and Software Engineering should be distinct programs at the university level.
评论 #33640841 未加载
评论 #33642576 未加载
Jtsummersover 2 years ago
&gt; By that I don&#x27;t mean only syntax of popular languages. I mean the art of solving problems using programming languages.<p>Out of curiosity, what school&#x27;s <i>don&#x27;t</i> include this in their CS degree programs? Not as in: &quot;I can major in CS here and stick to almost exclusively theory and math courses.&quot; But as in: &quot;I can major in CS here and don&#x27;t even have the <i>option</i> of taking project based courses and courses that are mostly dependent on writing programs to demonstrate understanding?&quot;<p>Has something changed that caused CS programs to drop most of their courses in the past 20+ years? Or did I get lucky with the schools I went to?<p>&gt; There are schools where a typical undergrad Algorithms class has no coding assignments.<p>Again, 20+ years ago, but the first algorithms class (and data structures) had us demonstrating our knowledge via programs, or writing programs to benchmark different things, and so on. That was for first years, not advanced students just the preliminaries, coding from day one (or near it). Even the 3xxx courses that didn&#x27;t <i>require</i> programming still encouraged it.<p>&gt; Ofcourse there are schools where there are courses with extensive programming requirements. I am not talking about those. Those are exceptions.<p>I cannot believe that the random CS programs in GA were exceptions to some rule. So again, where is this happening and why the regression if this is actually happening en masse?
geebeeover 2 years ago
I&#x27;d be interested in learning more of what you mean about &quot;good programming&quot;. If you mean the standard practices around software engineering - code reviews, unit testing, integration testing, automated testing, archiving and version control, and so forth, then yes, I would agree that CS programs don&#x27;t teach &quot;good programming.&quot; However, speaking as a math major who has had to continually study to remediate gaps in my understanding of CS fundamental, my impression is that CS majors do a <i>lot</i> of programming, especially around algorithms and data structures, operating systems, and compiler design, and were way ahead of math majors like me at the end of college. And I actually had a somewhat CS oriented math degree, since my classes in number theory, numerical analysis, linear and non-linear optimization, and graph theory all had programming labs.<p>What are these schools where an algorithms class has no coding assignments? At my college, you could take graph theory in the math department and not take the optional programming lab, but in CS? Really? Not saying this doesn&#x27;t exist but... weird.
kingcaiover 2 years ago
I think it&#x27;s really hard to think up of curriculum for a &quot;programming&quot; class. It&#x27;d be hard to standardize across different professors. Also while I do think that more programming experience would benefit most new grads, it&#x27;s hard for me to say that it would be more beneficial than say better interpersonal working skills or even specialized knowledge.<p>FWIW at the uni I attended, projects were a huge part of some classes (usually ~50%) and there were some SWE specific classes where you learn best practices &#x2F; tooling. You would need to be able to program in order to graduate. I feel like this is the norm and not the exception, but I may be wrong.<p>There were a lot of CS clubs at my school that hosted workshops and tried to teach people some of this stuff. Maybe you can find a club (or start one) at your school.
HeyLaughingBoyover 2 years ago
FWIW, &quot;regular&quot; engineering courses aren&#x27;t that great at teaching the skill of engineering either. You learn <i>tons</i> of theory, but little that is actually practical (outside of labs and capstone projects).<p>Traditionally graduates learn actual engineering on the job by being given simple projects and asking for help when they get stuck. Better companies will have a standardized way of doing this, but I haven&#x27;t seen a lot of variation on this theme.<p>In fact, come to think of it, that&#x27;s pretty much what I did with the intern I had last summer. &quot;Here&#x27;s a task in Jira to add this feature. This is the area of the code you&#x27;ll need to understand in order to do it. Contact me if you need help or let me know when you&#x27;re done and I&#x27;ll review it.&quot; He did very well!
Woodiover 2 years ago
Such life... But there are many reasons.<p>There is a lot to teach ! hw knowledge, asm, C and scripting languages at minimum. Then Lisp and functional languages and rest. And that just a <i>syntax</i> that takes years to be proficient with. Then you discover that all of them are full of if&#x27;s and loops (or recursions) and you start to smile from language flame wars. But still you need to concentrate on syntax of one or two languages. So, years.<p>Then there are algorithms - for all kind of things. Years.<p>And then there is domain of the problem ! Totally not related to languages syntax. Simply - programmers are in much worse position then journalists :) And <i>domains</i> are not part of uni program. Except some like eg. databases.<p>Also: on first year in uni we had fellow who learned good programming skills before, in a mid school. And he asked: I know how to program, why I need all that math ?? And dropped. And on the other hand - few years into uni one of professors said: there is no point to be a programmer without <i>somekindof</i> algebra. So what actually &quot;skill of programming&quot; is ?<p>So 5 years of learning programming is just not enough. Maybe joining some existing long term project could help - like kernel or some game. That is, without dropping CS :)
nonameiguessover 2 years ago
At least a few reasons I can think of:<p>- Career academics don&#x27;t necessarily have the level of experience in building large-scale software systems that need to exist and be maintained for a long time to teach that as a skill.<p>- University programs in general focus on time-tested fundamentals that aren&#x27;t going to change much over the decades, and practical programming skills involve a whole lot of toolset bikeshedding minutiae that is inherently ephemeral and not suited for curriculum.<p>- Semesters are too short to allow students to go through much in the way of a full development lifecycle on a project of any notable scale (exception for TAs and grad students working on libraries and tools maintained by the schools).<p>Not speaking for all schools, but I&#x27;ll say for Georgia Tech that I felt courses with significant project components were actually great for practicing programming as a practical, vocational thing, but at the same time, there was very much an attitude among the faculty that they weren&#x27;t going to teach you to program or anything about the specifics of languages and toolchains. You either needed to know that already or figure it out. Maybe that was elitist, but they were explicitly and intentionally selecting for the kind of people who can figure it out on their own. If nothing else, it is a lot easier to teach yourself programming than it is to teach yourself computer science and mathematics.<p>I never really experienced this kind of thing with other subjects. Physics and biology labs definitely taught you how to use the lab equipment, but in fairness, it isn&#x27;t feasible to set up your own lab, whereas any 10 year-old can get a sufficient programming lab out of a $50 R Pi with Internet access.
评论 #33647451 未加载
bjourneover 2 years ago
&gt; Ofcourse there are schools where there are courses with extensive programming requirements. I am not talking about those. Those are exceptions.<p>Are you talking about American institutions now? Because in my university classes larger and smaller programming projects were part of almost every course. Even the first year&#x27;s courses assumed the students had working knowledge of git.
brudgersover 2 years ago
<i>Just as an analogy, can a person majoring in architecture not do drawing or designing?</i><p>Of course drawing and designing is most of architectural education.<p>The problem is that unlike CS, architecture is a studio practice and a principal pedagogical premise is the only way to demonstrate design ability is by executing a design against constraints.<p>Another principle premise is that while there are objectively better and worse executions, there is no objectively correct solution. So no multiple choice tests in the design studio.<p>Finally, soft skills are part of the curriculum. Students have to present their work and stand there while others talk about it. Basically a long series of whiteboard interviews where the whiteboard contains weeks of work.<p>Sure programming could be taught in a studio environment. But probably not CS because the studio is not part of science pedagogy.<p>And to be clear, the studio dominates architectural education. All nighters are normal and expected because more work is how better is achieved and projects are only done because time has run out. None of which is part of science education.
q-bigover 2 years ago
In my personal opinion:<p>The reason is that there exist so many ways of programming. Programming is not a single skill, but a multitude of different approaches to get the computer do what it should.<p>To give an example: what an ABAP (SAP) developer does is very different from an embedded developer which is again very different from a frontend web developer, database developer, ...<p>So, learning programming is rather like learning to write great belletristic literature. What is the &quot;best&quot;&#x2F;&quot;correct&quot; way to write a belletristic book? Read a lot of of great literature and find your own style. The same holds for programming.<p>Also, the problem is that actually quite employers value good programming; they value people who can put together some application based on the current in-fashion library fast. Understanding the current in-fashion library from ground up leads to the situation that in most cases, when you come a little bit nearer towards understanding it from ground up, the library has become horribly obsolete.
silverlakeover 2 years ago
Your school should be requiring extensive programming projects for algorithms, compilers, OS, distributed systems, AI, etc. If not then your school sucks. Change schools if you can.
thenerdheadover 2 years ago
Because there doesn&#x27;t exist a trade school for programming quite yet. There are degree programs and bootcamps that are trying to fill this demand in specific applications of programming, but this skill is much more nuanced than your average trade. Who knows if that will change in the next decade given the advancement of AGI.
bern4444over 2 years ago
I think a large part of being a good engineer is similar to becoming a good writer with the key difference of being a good writer on a paper that 10 other people are also helping to write.<p>So the challenge isn&#x27;t just in developing the skill individually, but also collectively. No engineer is ever working alone on a project at work (and if they are its likely temporary).<p>Like prose and literature there are various styles, personal likes and dislikes, ways of problem solving etc.<p>Schools are concerned with imbuing in their students the skills to get a job. No fresh out of college employee is going to be the best of the group they join. It&#x27;s impossible because the group they are joining will already have those same people but who also have more experience. School has to teach enough to make their graduates employable - often in the context of being at least on par with other schools curriculums so their students aren&#x27;t at a disadvantage in the hiring pool.<p>I&#x27;d be surprised too with your assumption that schools don&#x27;t have practical programming assignments that give students time to write code and develop their own style.<p>Unlike reading and writing, which we start learning extremely young, software is only exposed often at the beginning of college with just 4 short to learn and practice. It may also not be the sole focus.<p>Being a great writer requires the perspective of a reader, which is also difficult to map for teaching software - learning to read other people&#x27;s code and write your own code in a way that is easy for others to read let alone modify and maintain is hard.<p>There really is just so much to learn and 4 years isn&#x27;t enough to do it all. Schools have to balance the breadth and depth of different subjects so students can understand what&#x27;s out there and also be on par with students from other schools.<p>That&#x27;s why there is so much room to grow in this industry (like many others) from associate to mid, to senior, to lead, to staff and then principal&#x2F;architecht&#x2F;etc. Plus all the specializations.
评论 #33646592 未加载
OkHedgehog1508over 2 years ago
I&#x27;ve had mixed experiences in master&#x27;s level programming-oriented classes. Some of the professors just kind of expect us to Google our ways through while some are fantastic at explaining languages, coding practices, etc.
karmasimidaover 2 years ago
Programming is REALLY to teach.<p>Unless you worked on some complex problems from start to finish, you can&#x27;t really understand why things are where they are right now.
nnoitraover 2 years ago
The premise is not true. Many universities in Europe teach proper classes with programming assignments.