36

I understand the book is written to describe C languages in general. The book is written to teach you ANSI C, not 'C languages in general' Does the book expect me to be able to translate the first program ... to a C# or C++ program? No, those are different languages, and the book does not expect you to do anything with those languages. The examples are ...


35

When I am working with new developers, I encourage them to come ask questions after five or ten minutes where they are not making progress. That has two benefits: the first is that they can get help without too much time spent staring at a problem, but they only ask when they are not getting somewhere. If they are learning - even on something that isn't ...


22

My only addition to everyone else's great answers: TYPING UP your question into the StackOverflow question interface is a great way to make sure you're thinking through it fully. I can't begin to tell you how many questions I've answered for myself in the process of laying it out clearly enough to ask it properly. The questions I've started and not ...


21

Two things: Computer Science is not about programming, but about higher-level concepts, algorithms, mathematical foundations of programming, that kind of thing. Any programming language taught as part of a CS curriculum serves as a vehicle to express and implement those concepts, but learning the language itself in-depth is not really a primary goal. As ...


21

You are on the right track to improve your skills, and it's understandable that you are uncertain about the reliability and enterprise-readiness of your code. This is a normal process to go through for a junior developer, and your interest to improve is very important, as it is a key to one day becoming a rock-star developer. As a reference to learn best ...


20

Stack Overflow, and every other Stack Exchange site, has a set of guidelines for asking questions: Do your homework Be specific Make it relevant to others Be on-topic Keep an open mind "Do your homework" implies that you shouldn't be too quick to ask. "Be specific" implies that you understand the domain of your problem well enough to ...


20

Read Steve Yegge's post on Math for Programmers. Among his insights: Math is a lot easier to pick up after you know how to program. In fact, if you're a halfway decent programmer, you'll find it's almost a snap. They teach math all wrong in school. Way, WAY wrong. If you teach yourself math the right way, you'll learn faster, remember it longer, ...


20

Keep in mind that I don't have time to read several 1000-page tomes about abstract programming. So are you asking for someone to give you a five step check list that will make you a skilled programmer? That's not going to happen! As with any other discipline, if you want to get good at programming you have to spend time and effort practicing and studying....


18

How do I objectively determine what areas of study, general knowledge, and other skills I would have gained through a CS degree that I may or may not be lacking in now? Browse the curriculum of the CS department at UW, borrow and browse through the required reading, look at previous exams and lab exercises (homework assignments). If you have no idea ...


17

OK, I find it too tempting not to answer your question, so here I am... A few things about me first I am 26 years old, and thanks to my father (btw, a mathematician and currently working as a professor) I've had the chance from a very early stage of my life to be around computers. (back in 1986 when I was born, though not the most common thing in those ...


16

Two fundamental reasons: Projects you develop at school are not to be maintained in the future, you just get a grade and move on to another course. Therefore, even if you actually attempt to "enforce" some rules, most students will not realize the true importance of it. When I was at university, some teachers actually did the effort and gave some extra ...


16

If we're talking about, say, top 10 ranked US colleges and universities (other countries will likely have different traditions and people will have wildly different definitions of a "countryside college or university"), no. A community college will generally choose what languages to teach based on what languages employers in the geographic area served by ...


12

Git: most powerful, steepest learning curve. Support under Windows was not stellar last time I checked. Unless the students are already familiar with it, think twice. Extremely popular so it might be worth teaching nevertheless. Mercurial: easier than git, but still distributed with all the advantages of this (cheap branching, work offline). Should take less ...


11

Disclaimer: I just got my CS degree. I'm not a teacher. This may sound obvious, but I think the best way to teach code maintenance is to have students perform code maintenance. Here's what I would do: Take a moderately complex problem, and two implementations that are semantically identical, but one is much more maintainable than the other. Request a ...


11

I think you need a proper project: Find a problem to be solved, and solve it. Doing something real (rather than hacking examples) will drill into your head all kinds of lessons: things that you have been taught that are good, things that don't work so well. The biggest difficulty in a real project is not so much writing code, its knowing what code to write....


9

This is an incorrect assumption, followed by an incorrect conclusion. Teaching programming is about learning how to solve problems with computers. That can happen in a variety of different languages. C is certainly not the best, nor the worst language to start with. You know what will degrade the quality of CS students? Not preparing them for the workplace ...


9

As you gain more experience you can certainly go back and review your previous projects/code to see where you went wrong. Hindsight is a beautiful thing. I know for a fact I've looked at code/documentation I wrote x ago and realised where I went wrong and where I could have improved. The fact you read blogs, books, SE, etc. should be giving you greater ...


8

To get the real reason, you would have to ask the people who run those institutions (and even then, they might not tell you). Several possible reasons (and I'm neither defending nor accusing anyone here, just guessing): You can get things done in Java Java it is a general purpose language and as such can be used to solve a lot of problems. Lots of ...


8

How can we teach maintainability? That's a matter of practice. The most straightforward way of practicing it in a controlled way I can think of is to simulate typical maintenance project about as follows. Get some project (Project A) that is well done and introduce few issues over it: inject some bugs, a good doze of duplicated and dead code, drop some ...


7

Like many career questions, the answer is, "It depends..." The single best programmer I have ever met didn't finish undergrad. He's heads and tails above everyone else, and it's obvious to everyone who has worked with him. It's inconceivable that he couldn't find a great job just by word of mouth. He's been a manager, architect, individual contributor - ...


7

If your presentation is about the history of programming I would focus on how a computer only understands binary, and that binary is essentially impossible for a human to understand so programming languages were created. From there I would show the same sample program in several languages to show the evolution to modern languages, something simple but not a ...


7

This in essence, is my question: How do I objectively determine what areas of study, general knowledge, and other skills I would have gained through a CS degree that I may or may not be lacking in now? Answer 1 If you learn something new from your study. Then you can objectively say that you gained this through a CS degree. A1. The Why A CS degree ...


7

I interview and participate in recruiting a lot of junior people fresh out of college. I have yet to hire anyone based on the subject-matter skills they picked up from whichever program they took. The reason for this is simple: no CS program (or any other program) I've encountered teaches any concrete skills connected with programming or software development ...


7

There are a couple ways I get ideas for things to work on. As you go through your normal life, think of useful programs that might be nice to have and then make a note of the idea. That way, when you have a need to learn a new technology, you can look at this list rather than trying to come up with an idea from a blank slate. Here are the ways I do it. ...


6

This is a actually a really tough question as there are going to be a lot of factors at play and they may or may not apply to you personally depending upon a number of variables. In general, when approaching formal education you need to look at your own skills and what your long term career goals are. While some will argue that there is no correlation ...


6

I think you answered your question in the question: "On Windows, you can get away with just knowing a programming language, an API you're coding against, your IDE (VisualStudio) and some very basic tools for troubleshooting (Depends, ProcessExplorer, DebugView, WinDbg). Everything else comes naturally." Gues what, on Linux you can get away with just ...


6

Maintenance means different things to different people, and comes about for different reasons. Worst case, the initial system was thrown together in a hurry, the initial team took credit for the whole thing. They followed the 80/20 rule, so while there might be a minimum viable product that can be sold, lots of customers need lots of fixes and small ...


Only top voted, non community-wiki answers of a minimum length are eligible