Live data from Hacker News

Ask HN: How would you evolve modern computer science curriculum?

news.ycombinator.com

21–27 of 27 posts

Re: Ask HN: How would you evolve modern computer science curriculum?

#21

I'd love to get y'all's feedback on a related question: did you receive any training in your CS degrees that had anything to do with testing, dev-ops, continuous deployment, and the like? I teach in an MIS department and have started to include some of these concepts in the capstone course, which was originally more of a project management course. From talking to the employers who hire our students (and the CS depart…

Testing and Version Control: Yes. Far more than we needed to.

Dev-ops and continuous delivery is much harder to learn in a college setting because you, IMO, only start to see the benefits on large long term projects or quick moving undocumented/poorly documented ones.

Re: Ask HN: How would you evolve modern computer science curriculum?

#22
From my own personal experience as a Computer Science graduate, I feel that an ideal Computer Science curriculum would be as theoretical as possible, but would promote outside work in industry for those looking to work in industry.

I interned quite heavily during my uni days, and I learned more about programming in the months I spent working than I did in an entire year on my course.

Re: Ask HN: How would you evolve modern computer science curriculum?

#23

I'd love to get y'all's feedback on a related question: did you receive any training in your CS degrees that had anything to do with testing, dev-ops, continuous deployment, and the like? I teach in an MIS department and have started to include some of these concepts in the capstone course, which was originally more of a project management course. From talking to the employers who hire our students (and the CS depart…

If people's comments here are any indication, yes, SADLY, that is kind of the way it is. Does it have to be? Definitely not. There are tons of ways to inject practical skill building moments into an otherwise rigorous and principled CS degree. For example, Professors could force students to turn in their coding assignments by Git Pushing to a repo. Since they have to do that anyway, they might as well version their a…

This is an orthogonal issue from the one you brought in originally, and in this case I am 100% with you.

In Programming 101, you require all assignments to be turned in by pushing to repository.

In Data Structures, you require each assignment to turn at least 5 versions which show the evolution of your work (not just 4 empty skeletons and one final push with the completed assignment at the end). Then was you asses the quality of versions you introduce this other soft technology called "peer review".

In later courses, like Compilers, you can have the whole group work on a single code base, each branching and merging back their own part of the work. You teach how to work in teams.

etc, etc...

What the choking point is here is that instructors themselves are, more often than not, not familiar with this kind of techniques and technologies. And they are unlikely to learn if there is not some serious institutional support for this. Of course the odd extraordinary professor will be a regular contributor to open source projects and the like, but all the others will not know what to do.

I think if you are interested to pursue this beyond a simple online discussion, you should start from here. Try to talk your local head of CS department into this kind of stuff, see where can you get from there.

Re: Ask HN: How would you evolve modern computer science curriculum?

#24
post #13

I'd love to get y'all's feedback on a related question: did you receive any training in your CS degrees that had anything to do with testing, dev-ops, continuous deployment, and the like? I teach in an MIS department and have started to include some of these concepts in the capstone course, which was originally more of a project management course. From talking to the employers who hire our students (and the CS depart…

I went through Georgia Tech, and there is never any formal introduction to version control. If you're exposed to it, it's from a job or a friend (who in turn got it from a friend or their job). If you don't know it exists, you'll never seek out and learn it. Testing was used in some courses. We had a software development class that involved UML, TDD, and everything "proper". Testing is also provided as a way of pre-c…

No chemical engineer I know learn how to go to the assembly line and take samples for quality control, either. And arguably this is a good thing. You pay to go to school in order to learn stuff that is useful across the board in many different situations, not to have the local big employer save a few bucks per new hire during the induction training.

Re: Ask HN: How would you evolve modern computer science curriculum?

#25
post #13

Earlier quoted context omitted.

I went through Georgia Tech, and there is never any formal introduction to version control. If you're exposed to it, it's from a job or a friend (who in turn got it from a friend or their job). If you don't know it exists, you'll never seek out and learn it. Testing was used in some courses. We had a software development class that involved UML, TDD, and everything "proper". Testing is also provided as a way of pre-c…

No chemical engineer I know learn how to go to the assembly line and take samples for quality control, either. And arguably this is a good thing. You pay to go to school in order to learn stuff that is useful across the board in many different situations, not to have the local big employer save a few bucks per new hire during the induction training.

This is a fair point, but begs the question: should a CS degree include, or not include, learning about software project management and software development processes? I teach in the business school (an MIS department) so it's not controversial that we'd teach about project management and operations management here. I don't know what the prevailing opinion is in engineering schools.

Re: Ask HN: How would you evolve modern computer science curriculum?

#26

Earlier quoted context omitted.

No chemical engineer I know learn how to go to the assembly line and take samples for quality control, either. And arguably this is a good thing. You pay to go to school in order to learn stuff that is useful across the board in many different situations, not to have the local big employer save a few bucks per new hire during the induction training.

This is a fair point, but begs the question: should a CS degree include, or not include, learning about software project management and software development processes? I teach in the business school (an MIS department) so it's not controversial that we'd teach about project management and operations management here. I don't know what the prevailing opinion is in engineering schools.

I think we have reached to point where we should admit that a career in software development needs much more learning than what can possibly be achieved at school (regardless of level).

The current state of affairs holds the belief that no CS graduate worth their salt should be ignorant of software engineering methodologies (agile, waterfall, etc), nor specific development processes & tools (source control, peer reviews, unit testing, etc). At the same time it holds the more or less contradictory belief that CS curriculum should be concerned mostly with Computer Science and not mention much of the practical side of software development.

The ideal is that a good program will present the student with multiple opportunities to pick up practical skills on the go. No formal class and no grades, but exposure through lab work. The reality is that this requires everyone involved (students, instructors and various other support roles) to work longer and harder to achieve this tacit expectations.

Re: Ask HN: How would you evolve modern computer science curriculum?

#27
From http://www.meetup.com/Oslo-pm/events/172566472/

"Perl 6: A Programming Language for Computer Scientists (And Other Crazy People)

A good Computer Science syllabus will cover everything from bit manipulation to set theory, from Boolean algebra to concurrency, from parsing grammars to graph traversal, from two's-complement arithmetic to higher-order functions, from sorting algorithms to multiple dispatch, from macros to closures. ...

To teach all these concepts and techniques it is usually necessary to resort to a wide range of different programming languages ... Lisp and Fortran ... Forth ... Smalltalk, C, Scheme ... C++, Perl, Occam ... Haskell, Java, JavaScript ... C#, Scala, Clojure.

This diversity ... encourages an unfortunate ... internal compartmentalization of concepts and approaches.

Perl 6 ... aims to provide all of the major features of all of the major languages from all three dominant paradigms.

... we stole the best features from 20 different languages, and then spent a decade working out how to put them together in a way that is clean, efficient, powerful, and still usable by actual human beings. And Perl 6 was the result."

Post reply on HN