|
kloa posted:I'm working on a ASP.NET project with a coworker and we do not have kind of source control (IT hella slow with the softwares), and it's a huge pain. It sounds like your coworker wouldn't be using source control even if it had been taught in school. I'm guessing they're not exactly an algorithms wiz, right?
|
# ? May 19, 2015 04:31 |
|
|
# ? Jun 8, 2024 06:03 |
|
Skandranon posted:Computer Science doesn't even really need computers. Say, somehow you go through school learning nothing but computational theory, what do you do next? You're probably not going into industry, but you could go into academia and research. But even in research you're still going to have to write programs to prototype, or prove, or evaluate your hypotheses. And you're probably going to work on research projects in collaboration with others. So you'll still need to be versed in basic programming tools like shells, editors, build systems, revision control systems, etc. Hell, even if the only thing you actually need a computer for, is to typeset a paper (and since everyone in CS research uses LaTeX), you're still going to need to learn how to use an editor and probably make. If you ever work on a paper with one or more coauthors, you're probably going to use (and are best off using) revision control too. This is seriously fundamental stuff in our discipline. ExcessBLarg! fucked around with this message at 04:39 on May 19, 2015 |
# ? May 19, 2015 04:32 |
|
Safe and Secure! posted:All we got about tools at my school was "tools exist for this. find one and RTFM or just use nano and javac for everything" and we turned out fine. We'd have been much worse off if we hadn't been taught to read documentation. I'm with you on this. I was not taught any S.E. skills at any point in my academic career either but rather picked it up "on the job" or during my internships. However, my experience with TAing undergraduates at a major US university has been that the vast majority of them are extremely passive and unmotivated and if you want them to do ANYTHING, you have to actually teach them (I could use more colorful language in describing the joys of my TA experience but that would be a digression. It includes gems such as "How do I install Visual Studio?" and "How do I install the source code?" - which was given to them in a compressed archive).
|
# ? May 19, 2015 04:33 |
|
Safe and Secure! posted:I'm serious - when you think of the ideal version control system lecture, what do you imagine the teacher saying and how much time do you imagine them taking to say it? ExcessBLarg! fucked around with this message at 04:41 on May 19, 2015 |
# ? May 19, 2015 04:37 |
|
I have worked with a lot of people who poo poo themselves when asked to start contributing via pull requests and not just randomly committing to master and subsequently mashing git pull/git push until they forced their hosed up version as the new remote HEAD.
|
# ? May 19, 2015 04:48 |
|
ExcessBLarg! posted:Minimally it would include a discussion on branching, merging, and how to resolve merge conflicts. I would also include what constitutes a useful commit message, and maybe mention what it means to ignore files and why it's done. It sounds to me like you're talking about git in particular, like you don't wish people were taught about version control in school so much as you wish people were taught about git in school. Git puts a really huge emphasis on some of those, but that doesn't make them important to using a version control system. Unless you're using git. Which is a flaw in git, I think, which leads to students being taught to use really flawed tools just because those tools are popular in industry. Safe and Secure! fucked around with this message at 04:56 on May 19, 2015 |
# ? May 19, 2015 04:50 |
|
I don't think "learning git" really needs any great fanfare, it's pretty minor. The reason I'm advocating it at my school is mostly because we have a hosed up submission system and git has a double bonus of getting people used to it, but mostly just because it can standardize things without having to roll too much new internal software. (Plus as a TA then I can grade on multiple computers without having to resort to things like sftp-ing the entire turnin directory into my dropbox folder, which immediately goes out of sync the second there's a late submission. It also gives graders diffs so they know what they had to change to get a submission to work correctly)
Linear Zoetrope fucked around with this message at 04:58 on May 19, 2015 |
# ? May 19, 2015 04:54 |
|
Also, TA's and college professors are completely unqualified to do any real teaching of software engineering practices. The real gap of software engineering knowledge in programmers today isn't that of being on a team, using version control, communicating with coworkers, and the like. It's in the actual code -- how to write good software. How to make an API that's difficult to gently caress up, how to make one that's practical to update in the future, how to take advantage of a type system, exactly what is it about global variables that will gently caress you up, how to minimize the risks of mutable state, how to design your datatypes so that they're aren't a big nest of pointers, good opinions regarding "be liberal in what you accept," that sort of thing. I mean, everybody who's fresh out of college is going to be terrible at communicating with coworkers, customers, and such, but I think people generally pick that stuff up (anyway, it's not like you can teach it in a class). It's architecture scale things like, don't don't GOD DAMMIT YOU NOOB-rear end FRESHER DO NOT PUT THAT VARIABLE IN THAT CLASS! WHAT IS ITS LIFETIME??? DO YOU KNOW???? That is the worst thing about coworkers. But there's no reason some class shouldn't just say "push your code to this git thing" or something though. Like how one or two math classes I had were just like, "You must use LaTeX -- figure it out." I mean, that should happen. But they shouldn't be wasting time on that in CS 1 or CS 2 or Data Structures & Algorithms. If people don't know about version control they can make backup copies of directories... that's a basic computer skill. sarehu fucked around with this message at 04:57 on May 19, 2015 |
# ? May 19, 2015 04:54 |
|
sarehu posted:There's no reason some class shouldn't just say "push your code to this git thing" or something though. Like how one or two math classes I had were just like, "You must use LaTeX -- figure it out." TBH, I probably would have started using it much earlier and saved myself quite a few hours fixing broken homework assignments if "git add", "git commit", etc. were all on the paper that got handed out at the start. I was too lazy to spend the ten minutes figuring out which commands did the basic things for a really long time.
|
# ? May 19, 2015 04:58 |
|
ExcessBLarg! posted:This is seriously fundamental stuff in our discipline. Lots of things are fundamental to doing CS in a practical manner, but that can be said about using operating system, spreadsheets, the internet. That doesn't make them Computer Science subjects. There's a better argument that basic computer literacy should be taught for all higher education at this point, and probably earlier in high-school, in the same way we consider English classes to be essential. Even more so. Which is more important, appreciating Shakespeare, or being able to effectively use the fundamental tools of the 21st century. shodanjr_gr posted:Except "Computer Science" as you are defining it would probably be limited to algorithms, discrete math, complexity and maybe theoretical aspects of databases/structures. Like it or not, relatively few places offer degrees in Software Engineering while a lot of places offer degrees in Computer Science. And degrees should arguably conform to the expectations of the job market (even more so in the US where degrees are largely viewed as a financial investment). We could also get into a discussion about whether Software Engineering is "applied" Computer Science. The point is that CS programs already try to teach a largely applied curriculum. However most of them do a bad job at it. I don't think this should be the case, and is a much larger discussion as to the role of universities in society in general. The problem we face now is that most CS courses do not meet the expectations of industry, but that doesn't necessarily mean that the courses itself need to change. Skandranon fucked around with this message at 05:20 on May 19, 2015 |
# ? May 19, 2015 05:17 |
|
Some people in CS1 starting out lack fundamental computer skills (such as "what is a zip and what do I do with it?!"). Trying to get them to use the command-line is not something I'd care to have to deal with when invariably one of them messes up their repo beyond repair of a GUI. If you're going to teach VCS briefly to people, you invariably probably want to wait till one of the upper levels where you have people that are not clueless about CS in general.Jsor posted:I don't think "learning git" really needs any great fanfare, it's pretty minor. The reason I'm advocating it at my school is mostly because we have a hosed up submission system and git has a double bonus of getting people used to it, but mostly just because it can standardize things without having to roll too much new internal software. (Plus as a TA then I can grade on multiple computers without having to resort to things like sftp-ing the entire turnin directory into my dropbox folder, which immediately goes out of sync the second there's a late submission. It also gives graders diffs so they know what they had to change to get a submission to work correctly)
|
# ? May 19, 2015 05:28 |
|
Safe and Secure! posted:It sounds to me like you're talking about git in particular, like you don't wish people were taught about version control in school so much as you wish people were taught about git in school. Safe and Secure! posted:Git puts a really huge emphasis on some of those, but that doesn't make them important to using a version control system. Unless you're using git. Which is a flaw in git, I think, which leads to students being taught to use really flawed tools just because those tools are popular in industry. CVS and Subversion both supported branching and are somewhat regularly used, although fairly heavyweight. Branching is a fundamental concept in DVCSes since each repo clone is effectively a branch, and merges are often a necessary step between pull/push operations. Yes, named branches are particularly associated with git, but other DVCSes encourage local clones as branches.
|
# ? May 19, 2015 05:33 |
|
Right, maybe branching is a fundamental part of how a modern VCS works, but you still don't need to know how it works to use one (unless that VCS has some UI flaws). Knowing how merging works isn't that important either as long as the tool is clear ("this part came from your copy of file A, this part came from their copy of file A, what do you think the new copy of file A should look like?") about what can't be merged automatically and what it's asking you to do about it. You don't teach grandpa how processes and threads work when showing him how to use Windows even though they're fundamental to operating systems because you don't need to know about them to use Windows. Maybe several other operating systems require their users to know about them in order to accomplish basic tasks, but that just means those other operating systems suck. It doesn't mean that understanding processes and threads are an important part of using an operating system. You only need to worry about branching in git (and mercurial?) because it isn't completely obvious what each command does for people who have never seen those or any version control system before. I see that as a UI problem, not an education problem.
|
# ? May 19, 2015 14:18 |
Safe and Secure! posted:You don't teach grandpa how processes and threads work when showing him how to use Windows even though they're fundamental to operating systems because you don't need to know about them to use Windows.
|
|
# ? May 19, 2015 14:22 |
|
Okay, sure, when grandpa goes to college for a degree in git, teach him how a a DVCS works. But if grandpa is just going to graduate and get a job in an office where his computer runs windows, he probably doesn't need to know how threads work, even though he's going to use Windows every day and his coworkers are going to be really upset if he doesn't use it properly. Safe and Secure! fucked around with this message at 14:38 on May 19, 2015 |
# ? May 19, 2015 14:34 |
So I guess we shouldn't teach C to people who don't major in C either. I'm sorry but there's no reason a computer science major shouldn't be exposed to VCS and learn how to use them if college is at all supposed to "prepare you for the real world"
|
|
# ? May 19, 2015 14:59 |
|
Make the third lab for CS102 have a component with some basic VCS stuff and rudimentary testing. Boom, done.
|
# ? May 19, 2015 15:19 |
|
I took a class for my CS curriculum which was dedicated to teaching a waterfall-like Software Development Life Cycle. It was worthless garbage. I could imagine a similar horrible justification for teaching Agile Engineering Best Practices. Teaching how to write correct and readable code is good from an academic and job-having perspective and is far more important. VCS should only be mentioned as a "maybe you should look into this yourself" tool and not something that a professor or TA has to handhold a class in and have students come into their office asking to fix their hosed up git repo.
|
# ? May 19, 2015 15:26 |
|
down with slavery posted:So I guess we shouldn't teach C to people who don't major in C either. College/University isn't actually supposed to do this. They are supposed to teach you how to learn. You're thinking of a trade school. A trade school teaching programming should definitely teach multiple version control systems.
|
# ? May 19, 2015 15:48 |
|
down with slavery posted:So I guess we shouldn't teach C to people who don't major in C either. Yeah pretty much. You know, like how a lot of CS programs currently don't teach C.
|
# ? May 19, 2015 16:14 |
|
Did you guys not have electives or something? My university required a core CS curriculum covering the fundamentals and then you could take a bunch of software engineering classes or be a dipshit like me and take a bunch of math classes that I'm never gonna use.
|
# ? May 19, 2015 16:15 |
|
Fellatio del Toro posted:Did you guys not have electives or something? Yeah but the one time a year you get to whip out your mad euclidean geometry skills you feel real cool.
|
# ? May 19, 2015 16:29 |
pr0zac posted:Yeah pretty much. You know, like how a lot of CS programs currently don't teach C. I think you'd struggle to find a computer science programming that doesn't teach a programming language Skandranon posted:College/University isn't actually supposed to do this. They are supposed to teach you how to learn. You're thinking of a trade school. A trade school teaching programming should definitely teach multiple version control systems. Yeah it would be nice if this was how reality worked but it's not, a vast majority of the computer science undergrads are planning on entering the workforce after graduation and it would be nice to spend a single class preparing them to use a modern toolchain.
|
|
# ? May 19, 2015 16:45 |
|
ExcessBLarg! posted:Free revision control was pretty crummy until Git, Mercurial, and other DVCS systems came out about ten years ago. Even if CVS and Subversion were usable, the barrier of setting up a central repository put those tools out of reach for a lot of folks for use on personal projects. You're seriously overstating how much better git, Mercurial &c. are than SVN here - especially to throw together a local repo for a personal project.
|
# ? May 19, 2015 17:04 |
|
down with slavery posted:Yeah it would be nice if this was how reality worked but it's not, a vast majority of the computer science undergrads are planning on entering the workforce after graduation and it would be nice to spend a single class preparing them to use a modern toolchain. I feel your pain, but this is more to do with people going to University for the wrong reasons, and Industry expecting the wrong things from University. That still doesn't make any of these things "Computer Science". That definition shouldn't be turned into "programming" just because it's too much effort to create a good definition for "Software Engineering". Computer Science is about the science of computation, not how to effectively work on large software projects.
|
# ? May 19, 2015 17:05 |
|
Evil_Greven posted:Take something like C++, a marketable language, and throw it at people who have never programmed anything before. Why do you say that? I started with C++, all but one of my CC classes were C++. I felt like it was a good one to start out with because while I'm sure it has libraries as extensive as Java, they weren't apparent. So we got the ease of a high level language without being able to cheat and just constantly call foo.bar() for every data structure. Also, that way we didn't have to learn how to make different classes in different files until we got to the object-oriented section. And we learned good habits like initializing variables and prototyping functions, which aren't necessary in Java. I know you didn't say people should start with Java, that is just my only other point of reference.
|
# ? May 19, 2015 17:54 |
|
Blotto Skorzany posted:Make the third lab for CS102 have a component with some basic VCS stuff and rudimentary testing. Boom, done. It's stupid poo poo like this that gets my goat: revdrkevind posted:I think at this point learning programming should begin by configuring your git repository. The end of the hello world should be a git push.
|
# ? May 19, 2015 18:18 |
|
You guys should make a new thread if you're interested in debating and discussing the merits and shortfalls of university CS and SE programs.
|
# ? May 19, 2015 18:22 |
|
edit: damnit SWSP
|
# ? May 19, 2015 18:28 |
|
Thermopyle posted:edit: damnit SWSP
|
# ? May 19, 2015 19:38 |
|
Star War Sex Parrot posted:You guys should make a new thread if you're interested in debating and discussing the merits and shortfalls of university CS and SE programs. i would be down for this but am not talented enough to create the OP. someone do it!!!
|
# ? May 19, 2015 20:00 |
|
Star War Sex Parrot posted:That was a drat good effort post that you'd written, too It makes the effort worth it if you thought it was good!
|
# ? May 19, 2015 20:09 |
|
an skeleton posted:i would be down for this but am not talented enough to create the OP. someone do it!!! I can do it later today if nobody else wants to. I don't think it needs to be all that fancy, tho.
|
# ? May 19, 2015 20:38 |
|
an skeleton posted:i would be down for this but am not talented enough to create the OP. someone do it!!!
|
# ? May 19, 2015 20:55 |
|
Jsor posted:I can do it later today if nobody else wants to. I don't think it needs to be all that fancy, tho. Programmer Competency Matrix Google's Guide to Technical Development for Students (basically what skills or activities Google would like CS students focus on to become successful Software Engineers) Edit: Please post a link if someone ends up posting a thread, as I'd be interested in participating and talking about my university's programs as well. Star War Sex Parrot fucked around with this message at 22:42 on May 19, 2015 |
# ? May 19, 2015 22:40 |
|
Star War Sex Parrot posted:Some talking points that might spur conversation: Wow, instead of levels 1 - 2 - 3 - 4, he uses 2^n, n^2, n, and log(n). This guy is the biggest nerd ever...
|
# ? May 19, 2015 22:56 |
|
22 Eargesplitten posted:Why do you say that? I started with C++, all but one of my CC classes were C++.
|
# ? May 20, 2015 02:26 |
|
Safe and Secure! posted:TBH, I probably would have started using it much earlier and saved myself quite a few hours fixing broken homework assignments if "git add", "git commit", etc. were all on the paper that got handed out at the start. I was too lazy to spend the ten minutes figuring out which commands did the basic things for a really long time. Same here. I'd consider Git somewhat advanced knowledge that beginners absolutely need a cheat sheet for. It's a really cool and vital piece of technology that forces you to think in graphs, trees, nodes, references, remotes and locals and gives you weird looking syntax unless you happen to be a bit of a Linux kernel hacker. But when I was a beginner um, I just want to commit a piece of code? How the heck do I make my changes go onto the server? What the heck is master and origin? It's a bit of a mess. It honestly took me two to three projects and a full time job before I really figured it out. That said, I really like Git now and it's probably Stockholm Syndrome. Also with regards to the LaTeX thing, the funny thing is that I bet you most people don't really learn the tool properly and just force the markup (downs?) until it looks nice. LaTeX is just so slow outside of equation writing, where it's really fast.
|
# ? May 20, 2015 03:15 |
|
I'm a freshman community college student and I'm trying to figure out which universities to apply for in the fall. I'm looking to stay in California and I have a fee waiver that allows me to go to state colleges tuition-free. I've looked at college rankings for Computer Science but I feel like I need a more detailed source of information when it comes to comparing colleges. College counselors can sometimes be an echo chamber. Here's a summary of where I stand now as a student, copied from an email I sent to Caltech's admissions department: quote:I am currently a freshman community college student majoring in Computer Science and I am applying for a summer internship with Caltech's Graduate Aerospace Laboratories. I have an interest in robotics and neural networks and I have a 3.77 GPA.
|
# ? May 20, 2015 23:13 |
|
|
# ? Jun 8, 2024 06:03 |
|
Technical interview with Amazon later today. The first one. What should I expect? I've been a developer for three years, so I tend to think more about "oh this is figured out, I'll check my sources if I forgot this data structure is good for this or that based on bla bla foo foo foo" than stuff like "stack vs queue for breadth and depth traversal!" Is this going to bite me in the rear end or is that to be expected? Also should I be ready for "hash your integers for 2sum" type poo poo or stuff more like "linear probing with a hash means worst case is gonna be O(constant for the hash + n for the list built off of that single bucket since the hash is literally awful) or on average just more like O(c)" ? STILL waiting on the SF joint to say yes or no. I'd take it if it was offered. Generally an amazon interview scheduled means an offer too good to refuse comes up right before the actual interview, so let's see if that happens again this time!
|
# ? May 21, 2015 14:53 |