4 ms·
Did anyone actually learn software development from their CS degree?
by lifeformed 14y ago
Did anyone actually learn software development from their CS degree?
- per06a 14y agoYes. Mostly from these classes: 1. Operating Systems (custom malloc lib, building own data protocols, servers, networking, etc) 2. Compilers. If you've ever taken this, I really don't need to say more. It's basically a semester-long project with distinct phases all relying on each other (parser, IR creation, type-checking, back-end code generation) Pretty much every one of my classes included a heavy programming load, including Algorithms. Depends on the program.
- lifeformed 14y agoI found that a lot of the stuff I do daily (architecture, and structuring code for optimum readability, elegance, and performance) was barely even glossed over in my classes. I guess the how-computers/programs-work type of stuff is pretty important (in a subtle way). I just learned waaaay more by making things I liked in my own free time (games, web apps, tools).
- bdamm 14y agoI've found myself to be an effective programmer because of the non-degree experiences that allowed me to see the larger strategic and tactical environment in which programming takes place. However, the foundations that my CS degree gave me allow me to think much more openly about the possibilities of what can be done with computers. I don't need to depend on what a library can do, I can dream big and then find the code that does what I need or build it if I have to. And strategic thinking is an orthogonal skill that will elevate anybody no matter what professional discipline they are in. As a professor of mine once said "if the only things you learn at university are covered in your classes, you've attended a very poor university indeed."
- wting 14y agoOS: Used mutexes, semaphores, implementation details, argue about pros/cons, liveness/safety properties. Implemented shell, virtual memory, interrupt handling, process tables, scheduling algorithms, and multi-processor kernel support on JOS. Inode management and journaling for a FUSE filesystem. Concurrent network proxy. Distributed Computing: Paxos, Bayou, Byzantine Faults, 2 Phase Commit. Network Security: Had to demonstrate SQL injection, XSS attacks, stack smashing various C programs (one exploit required taking advantage of a double free to gain control). Programming for Performance: cache / matrix multiplication optimization, finding single source shortest path for the USA road network using a multithreaded implementation on a supercomputer 3 ways (Djikstra, Bellman-Ford, BF with chaos relaxation), and again using CUDA. Algorithms: graph theory (cycle detection, min-max flow, bipartite detection, Kruskal's, Floyd-Warshall, A*), divide & conquer, recursion / dynamic programming, greedy algorithms. Other courses: compilers, data structures, combinatorics, probability, linear algebra. These are just some projects I've done over the years, and only a subset of what was taught. Oh, and I picked up boring stuff like git, unit testing, and 3NF along the way. > Did anyone actually learn software development from their CS degree? Yes, yes I did.
- drivers99 14y agoMy CS curriculum in the mid-90s had a software development course. We broke into groups and developed a piece of software following the Waterfall model. This was before eXtreme Programming or Agile Methodology were invented so we didn't talk about those. "CS 371 - Software specification, design, testing, maintenance, documentation; informal proof methods; team implementation of a large project"[1] [1] http://catalog.nmsu.edu/previous-years/undergraduate/Undergraduate_Catalog_95_96/ch8/cs.html http://catalog.nmsu.edu/previous-years/undergraduate/Undergr...