Why coding prof. why?

Public thoughts on why coding prof sometimes generate assignments that do not make sense, from a programming POV. @Argon like your prof. They give assignments where you cannot implement a project how it would actually be in the real world. Data encapsulation for example.

Thoughts guys and gals?

They are mostly theory classes. CS departments are noctorious for this everywhere. It's just who they are. They have no/desire no passing relationship to actual real-world structures but rather want the real world to work the way they design it to. Just...don't ask them to actually implement it.

If you think of IT as the implementation of CS theory, you get less mad at CS people for writing assignments that serve no practical purpose to anyone ever.

"Oh look something useful came out of the Computer Science department for once. What a surprise!"

2 Likes

I think it's partially to do with the fact that they assume some of us know nothing, so they try to 'lie' to us, by lie, I mean it makes things more simple for some, and to be fair, there are some on my course that need it explained in such a way. My lecturer's have actually lied to us before now too, they've admitted so too, like saying how

I mean like my current assignment, I want to write another class with a few methods, possibly one, but a few would be better in my opinion, just to make it more readable and what not. Anyway, the way they've made one piece of code for my assignment is that you're forced to do it in a very specific way, it's their way or the highway, unfortunately. In my opinion that's not a great idea when teaching pupils to programme, I think they should allow pupils to tackle things completely on their own then review what they've done. I mean yeah, set some basic guidelines, because if you did it unique for each student, then there's be many different ones and that would take an insane amount of time to mark.

I mean when we were working on making a Queue implementation, with a LinkedList implementation, we weren't allowed to use arrays, although my lecturer stated how it was acceptable to do so, only not for the assignment. I mean I can see how it would probably be easier to do so with an array, but oh well, I've done the work had full marks for that, so I'm not complaining. I just think that the system could be adjusted a little bit, just to make it more like the real world.

When I was in high school we were in the scenario of the real world, we had problems handed to us, very vague guidlines, more so about how the output was presented or how the UI was laid out. But we could basically make to code do anything we wanted, as long as it gave a valid/correct output. I mean you could make your code 1,000 lines long, or just 10 lines long.

I found that a better learning experience for programming as if we ran into an error, it would be more beneficial to learn where/how the error has emerged. I also found programming with graphical applications was always a good place to start learning, simply because you can physically see what your code does. I.E. working in some sort of game engine, myself, I only worked with game maker 8.1 during high school.

The idea is to stretch your understanding of the programming language you're learning. It's to push you to explore and find new solutions.

CS departments are really hit-or-miss at colleges. My college happened to be a bad one. I was in computer engineering and we had to take a handful of CS classes. They were a joke compared to engineering classes. My friends and I were blown away by how narrow minded and constrained the thought process were of both the CS teachers and students. If the teacher didn't perfectly layout instructions and constraints on an assignment, the students didn't know what to do or where to start. The engineering students saw it as freedom to not be constrained and quickly engineered a solution while the CS students thought there was only one solution and the prof didn't want to share it.

It really showed a big difference between engineering and science in the computer world. Engineers are taught to solve problems, scientists are taught to optimize the solution and/or invent new methods that can be used in solving problems.... but engineers are the ones that solve the problems.

I hate to rant against CS students... this was really just my experience. I've heard much better things about CS departments at other colleges.

That's how I see every assignment, I mean I see them in ways where I can do whatever I like to make them better/get them to work. I dislike how we're given a rule for basically every line of code we make, I think we should have more freedom, I look forward to seeing future assignments, if we have more freedom in future work, I wonder how some students on my course will deal with it.

If that's the case then I'm not sure if I'm an engineer or a scientist, because I'd like to manage to get the best of both worlds, where I've optimised my code, so it'll run efficiently, but also solve the problem in a nice and simple way.

My CS department is basically shared with the software engineering department, the first 2.5 years are exactly the same at BSc level. But we are forced to write our solutions in such specific ways that I feel it's nothing like developing code in the real world, where you're just given a problem and you've just been told to solve it. Yes I understand there'll be standards and guidelines on how to solve the problem, even if that just includes styling standards. But you get what I mean, we're not even allowed to test things in different ways, it's all very controlled, at the moment it feels like it's more effort to write the assignments than it is to solve them.

You would do better as a computer engineer.

The majority of CS jobs do not involve any design work or problem solving. It's usually just implemented what has already been designed. You will always have constraints and be told how you are to do things. (obviously I'm generalizing)

Well, maybe I'll just do freelance in that case, I'm joking, I'd like to get experience in an office, but I'm still unsure as to what I want to do.

I mean I know I want to do some sort of development job, but what exactly, I like web development, but then again, I do really enjoy working in other parts of the development world.

Any advice or tips on that?

There are SOOOOOOOO many places you can go and things you can do with good coding skillz. Each has it's pro's, con's, and limitations.

What year are you in your BS?

I'm only in my first year thankfully, so far it has been a breeze, but I've done loads of side projects, like learning different types of languages, I know a nice variation of web based languages, I know some very low level languages, I've even done a tiny bit of assembly, etc.

I like to keep myself busy, but I'm finding it hard to manage a tonne of work all at once, it also doesn't help how I'm the 1 'computer guy' in my family, that means you're consistently being used for something trivial and time consuming. It's also worse for me because I have relatives that can't figure out how to turn a computer on, or hook a TV up to a DVD player.

I know the feeling... every time an extension cord needs plugged in... am I right?!?! lol

If you're in your first year, you still have lots of flexibility and plenty of time to discover what you like doing the most. Here's some advice I wish I could give myself as a freshman.

  1. Talk to more than one adviser in your department. It's too easy to be assigned to an adviser that doesn't give a shit about you or your future. Talk to more than one and possibly even some over in engineering. As you dip your feet into new topics each semester, you will slowly build a good picture of what's out there and what interests you. Ask advisers how these things are used out in the real would at JOBS.
    You can wait a while before really deciding what you want to do, but by the 3rd year you really should have it narrowed down to a few things you want to focus on. This will help tremendously in moral to focus on your studies, job hunting, and grooming your resume.

  2. Find advisers who have actually worked at a real job for more than 5 years. Profs who went straight from BS -> Masters -> teaching don't know shit about what is used in the real workplace and will set you up for failure when you walk out of college with that $60k piece of paper we call a diploma.
    I once got to know a prof at my school that only worked part time. He didn't even have a real office, BUT, he had 30+ years of experience working at the Federal Reserve IT and was WAAAY up the ladder. He taught classes for kicks. He was a GOD. He had so much real information about how the world works it was dizzying and he loved to share it. FIND THOSE PEOPLE.

  3. Take time to really read your curiculum and know when the "past the point of no return" is for switching majors or focuses. If you ever want to switch to engineering and wait too long, you will effectively be throwing away many semesters of $$$ and work. Know what the credit losses would be and how long you could wait before you don't have any option anymore.

  4. IT is a sticky trap. If IT is your thing... go for it and rock it. However, if your not really sure if you want to get into IT or maybe you'd rather focus on software development, absolutely do not dable in IT. Once you are in IT or have IT experience on your resume, there is no escaping it. You will never be taken seriously at anything other than IT. I don't know why this is, but it's true. I have learned this from talking to IT people and from my own experience. Trust me. IT is all in or all out.
    I took an IT internship just because it was availble and it was a computer related summer job. I put it on my Resume because it was almost all I had. Every software engineering job I interviewed for back in my home town the story was the same... the guy would look down my resume and see "IT" and would imediately say, "OH, you're an IT guy... this job isn't IT. You sure you're interested? I don't think this will be a good fit for you." Luckily I managed to escape it by a miracle. (another story)

  5. Get involved in techy/nerdy groups. I was like you. Classes weren't too difficult and I still had enough free time for loads of my own projects. This was great and I learned just as much on my own as I did from boring lectures, but I was totally missing out on several groups I discovered in my last semester. Find these groups early on and get involved. They are FANTASTIC resume material and you can also get to travel and meet people at competitions, conventions, etc. Employers LOVE seeing this kind of initiative and interest on your resume.
    a. Linux user group
    b. any sort of Robots
    c. Does your college have any cross-discipline design programs? (mine had one called "Da Vinci Program" http://www.davincicenter.vcu.edu/)
    d. Maker Space or Hacker space <--- cannot stress this one enough!!!
    e. IEEE group

Sorry for the wall of text, there's even more I could say but I need to get back to work. I've got some sweet code to write today. ;)

2 Likes

Like the responses from the community thus far!

1 Like

I have a professor who gives assignments with some strange requirements. Mostly I think it is just to teach you about things that aren't quite as common. For example on of the assignments I had required we use the .NET serialization library. Personally I would of spit it out to a json file and called it a day

serialization is usefull for sending raw data over network (or some other pipe) and/or compressing raw data for more compact storage.

Actually the way Microsoft does it it ends up using more disk space than if you only wrote it as basically plain text me handled the conversion manually in code. Also using built in libraries from .NET make it very platform specific whereas json is very easily migrated around

how do they do it? load it up with meta data?

Basically. You put a special notation before the class declaration and the compiler does whatever so you can serialize and deserialize it. Looking at the serialized file yeah there is a ton of things pertaining to classes and whatnot to recreate the original object. Like I said personally json would be the preferred format

I Study Computer and Mobile Engineering and I have had projects that seemed pointless but here is what I have taken from it.
Programming is an art. Everyone tackles an issue differently, some do well, others don't. But something that everyone in the industry must do is be able to think of how to tackle an issue from a different angle. What these scenarios that seem utterly pointless do is teach you how to think. An understanding of what you can and can not do which is very important in the industry. For example last week I had a workshop on data sorting and best methods to sort data from small to large making use of efficiency. Whether you should use nodes to store data, An array list , Hash map. But what we had to do is design a sorting mechanism ourselves, using our logic and compare it with other sorting methods built into Java.

To be fair, while I got it done in under half an hour (Generally have robust logic which doesn't work well in social situations but works wonders in programming), A lot of people struggled. Now we already had the tools available to sort an array thanks to java. And we could use all sorts of sorting algorithms but the point of the workshop was to teach us the logic in how these sorting algorithms work so we can have a decent understanding as to what algorithms would work best in which situations.

I would personally take a proper look at any assignments that you may not understand the purpose for. Last year I learned about matrices. I had no clue as to the purpose of them but then after the break I threw myself at OpenGL and suddenly I found a use for a concept I had previously had no clue of what use it would have.

1 Like

Okay, there's a lot of really useful advice on here, and personally, I'm feeling inclined to graphics/web applications right now, and if I do decide to follow web based applications and 3D graphics, is there any advice anyone can give me?

Argon, i think there are some threads for this already; or you could start your own! :D

1 Like

@Fragmented_Cat, yeah you make a ton of sense. But so far this semester I haven't learned anything I think is useful. In the beginning, I learned how to code in C, and then I learned how to go from procedural to OOP with Java. But for my last semester before I get my AS, the final programming course to take is Visual Basic. I've just learned how to make pretty forms and not actual concepts that I could apply else where. And the prof has a 5 page requirements list for every weekly assignment. Yeah I guess the arguments could be, 'teaches me what coding for a living could be like'. But I'd argue that it would be in a language I would want to use.