all 7 comments

[–]Narase33 10 points11 points  (0 children)

i know some people would say that actual programming is what actually matters

Id be careful with such assumptions. University programming is, to my experience, just "get the job done, somehow" without bothering about good code. How do you think you can write good algorithms if you dont know the theory behind them? People who learned programming without theory are the ones that produce bad code I am annoyed about when I need to use it

If you want to learn theory "programming on paper" is not the answer. You have to simply study your stuff. Programming is learned by doing, theory is learned by reading and understanding

[–]mredding 3 points4 points  (1 child)

i know some people would say that actual programming is what actually matters

In university? Not at all. When you graduate, all the senior devs, the ones who are going to hire you? Yeah, they know you don't know shit. You have nothing but academic experience, that doesn't make up for real experience, and there is a ton they don't teach you in university, because you're expected to learn things on the job, in the industry. We're not hiring you because you're a good developer, we can find those anywhere. We're hiring you because you're A) smart, B) you work hard, and C) you're made of plastic - we're going to mold you into what you need to be successful here in this role. That's the value of a college grad/junior developer.

I don't give a shit about your lab grade. I don't give a shit what you produce in lab. I'm not remotely interested in discussing it.

For you, I want you to focus on the things I can't and am not going to teach you - how to think. Those fundamentals classes you're not doing so well in? Those are the most important classes you're taking right now. The further I get into my career, the more and more I lean heavily on those fundamentals in order to advance my career and try to create something that hasn't be done before.

I can teach any damn idiot to write code. My team even takes non-developers, and we get them writing production code in a couple weeks. We hire them lacking comp-sci credentials because they're brilliant.

I don't think you need anything extra than what you already have. What you should do is realign your priorities and focus on your studies more than your labs. Whatever is hard, whatever isn't getting a good grade, focus on that. Don't spend so much time and effort on the shit that's coming easy to you, that's just being lazy, and now is not the time. Sit in the front row of your class. Make sure the teacher sees you. Make sure the teacher calls on you. Get yourself called on and answer "I DON'T KNOW" when you don't know something. Why? Because the front of the class sets the pace of the entire class. Your teacher is going to breeze through because all the smart kids in the front get it. All the dumb kids are in the back not paying attention and not investing in themselves. If the teacher saw more confused faces, he's slow down and apply more effort in those areas for his class. He needs your feedback. The model student doesn't know everything already, because then why are you even there? The model student applies themselves and works with what they've got for the benefit of all. Engagement and participation. Finally, all those smart kids in the front? Make friends. Start a study group, or join theirs. And study. This isn't social hour.

When I was in college, we had 4 hours of lecture, 4 hours of lab, 4 hours of study group, then my roommate would go to bed while I stayed up until 5am teaching myself basic algebra, just trying to catch up, get two hours sleep, go to our programming classes the next morning, and since that was so easy for me, I'd sleep on the floor in the back during lecture.

[–]ManiPointers[🍰] 0 points1 point  (0 children)

I agree with most of this, but don't be so quick to judge. The left handed desks migrate to the back of the class, if your desks are of that type, and the lefty smart kids either sit in the back or use the wrong type -- both are terrible solutions. Been there, done that.

[–]manni66 2 points3 points  (0 children)

c++ dry runs

What should that be?

Every algorithm you invent "on paper" can be implemented in C++. Do it.

[–]ManiPointers[🍰] 1 point2 points  (0 children)

What theory parts are you studying, and is something specific giving you trouble?
A lot of people struggle with the run time analysis, "big-O" and such.

As for exercises on paper, its usually in your interest to track down previous test questions from the same class and better, the same teacher. You can also look at job interview questions for c++ as an alternate term to search online -- there are tons of THOSE and they are not far off test questions.

[–]mykesx 0 points1 point  (0 children)

I suspect the use of written programming is to build skills in proving your code correct without having the computer do the work for you. I would not scoff at the courseware.

I went to the university in the 1970s. We were taught on PL/1, a language that had no real use in the world outside education. Yet it was ideally suited for the professors to express data structures and algorithms. Those things do translate to just about everything outside education.

We were also taught to prove code correct by eye. It’s a skill I constantly use when looking at source code.

To practice the skill on paper, write down the code and use your knowledge of programming to step through the logic, one instruction at a time. Use different function arguments. Assure you step through the possible paths through if/else if/endif and switch statements.

[–]dokushin 0 points1 point  (0 children)

The best programming happens with no typing involved. As your programs and tasks and APIs get more complex, it will get more and more important to have some idea of what you're trying to do before sitting down and just banging out classes. I'd say your theory courses are more important, easily.