Computer Science Majors and Coding and ish

Avatar image for velamo05
velamo05

125

Forum Posts

0

Wiki Points

0

Followers

Reviews: 0

User Lists: 0

#1  Edited By velamo05

So I am one of those lucky many within generation Y that gets to apply for college this year. I'm not so much concerned about where I attend, because in my state I am automatically admitted given my class rank, but it did make me start thinking about majors. I get written off as dumb quite a lot (I'm blonde and on my school's dance team...which is kinda like cheerleading, anyway people are ready to believe the stereotype even though I have a very good GPA and test scores) I had originally resigned to majoring in communications out of sheer inability to figure out anything else I could be successful in or cared about. A few weeks ago however, I had this random desire to learn more about coding and decided to teach myself with resources online. I feel slightly competent now in Python and JS, though have yet to really do anything with it, but it made me realize I find all this stuff really interesting. I'm not the best at math however, I've taken all honors classes, but I got B's in pre-cal and skipped to stats and never took calc. I understand computer science/engineering is super math-based, and having that be my weakest subject it scares me, though I feel I could get better if I worked at it obviously.

So any computer science majors (or people who understand coding), does it seem completely illogical and stupid for me to try and pursue something I know very little about as a major? I know I can always change it but still. Also, any recommendations for sites to help me brush up on my coding knowledge? Thanks and share your experiences, duders.

Avatar image for donpixel
DonPixel

2867

Forum Posts

0

Wiki Points

0

Followers

Reviews: 0

User Lists: 0

#2  Edited By DonPixel

@velamo05: Coding is more a craft than a science, you learn by doing it. In my job I've meet excellent coders who never even attend college, some others have weird backgrounds like physicist or myself former Architect.

It really depends what you want to do with a computer science major, my take is that if you are not sure at this point is most likely you don't have the passion for it. Not necessarily a bad thing, but then as I said people who like to code just code... you need no major for that.

Maybe try some python tutorials, is a fairly easy language to learn and a great introduction to programming. Learn To Think like a Computer Scientist is a great beginner book. Also google pygame, it is a python library based on the sdl warper with python, means you can do 2d games with it. As I said pick up a tutorial write stuff, if you enjoy it.. you going to be coding in little to no time.

Avatar image for tycobb
TyCobb

2036

Forum Posts

90

Wiki Points

0

Followers

Reviews: 1

User Lists: 0

You only need high levels of math if you are planning on making 3D games/engines or planning on making business applications that would require it.

Most business applications are basic arithmetic so you should be fine. Your possible hurdle will depend on what the classes require or have you do.

As for sites, I would recommend pluralsight.com. It's not free though, but you may be able to get it for free since you are student.

Really the best thing that helped me when I was young, was just straight up books. Once it became easy to start Googling for specific questions and StackOverflow started taking off, I found the best way to learn a language was coming up with a stupid idea for a program and then searching for how to do something. The biggest part is learning that first language, but once you understand how to program, other languages for the most part are just syntax since you know the key elements. A dictionary is a dictionary no matter the language. It may be called something else, but each language normally has the same built-in tools. You just have to search for what they're called.

Hope that makes sense and I didn't just ramble on.

Avatar image for ben_h
Ben_H

4833

Forum Posts

1628

Wiki Points

0

Followers

Reviews: 1

User Lists: 5

#4  Edited By Ben_H

If you want to succeed in computer science you have to be prepared to do a lot of work and teach yourself a ton, especially if you are taking it at a university. Computer science isn't so much about coding itself, because that is easy. It is far more about concepts and problem solving (and the difference with problem solving here is often you have to figure out where to start). If you take a IT or Networking related certificate at a vocational/technical school they might hold your hand a bit more but past first year in university, you are on your own and it can be quite challenging. At my university the dropout rate for comp sci is over 66% after the second year, many of those being are those that were either just in it because they wanted to make games but were clueless about the subject, people who were lazy, or those who were in it for the money and weren't passionate about the subject at all. The people who last past second year are either naturally really good at/passionate about the subject, or work their butt off non-stop. Of course there are those who are a bit of both like me, but that is how most of the people I know are in it.

Computer science isn't as heavily math based at the start but it is later on if you are doing research or once you get into theoretical computer science, then it can be hugely math based. Proofs and whatnot. I just finished a class on it. Stuff related to cryptography is also hugely math based. Other areas are too. You will need to learn calculus and linear algebra to do work in the field though, along with statistics. Much of comp sci is logic based more than anything. Making things that logically make sense or proving that concepts are logical. You will have to take a class on discrete mathematics and formal logic and look at things like Relational Algebra/Relational Calculus (which are hugely important when working with databases and using languages like SQL) and learn a bit of graph and tree theory (also, induction proofs, and a billion other kinds of proofs), since they are useful in network-related fields. There's a lot of abstract concepts that you have to get used to later on that can be kinda weird at first, like Test Driven Design, where you work almost backwards because you write tests for programs before writing the programs, and things like various architectures that you have to plan your program around. One of the biggest mindbenders you will learn early on will be Object Oriented programming and through that inheritance and polymorphism. Understanding those concepts is basically mandatory these days because so much is done using them now. We have 2 mandatory classes on Object Oriented at my university and a bunch of optional ones in third and fourth year.

One of the biggest things you will learn is that general concepts in computer science are much more useful than just learning programming languages. For our first year, we did a good chunk of our work in pseudocode (which we then implemented in C++, but all planning was done without a specific language in mind), which is not an actual programming language but instead a way to more generally show a programming concept. Once you have the concepts down strong enough you can pick up most languages outside of the more complex and tough to learn languages like Perl or Haskell pretty fast because all it is usually differentiated by is syntax in many cases (that is simplifying things a bit but for many cases it is true. I'm not going to get into procedural versus scripting versus functional because that is pointless here). I taught myself a fair chunk of Java in a day or so, and after that C# in about the same amount of time.

You could always take the introductory class and see how that suites you.

Also, it would be a good idea to learn UNIX either through Linux, Mac, or BSD. You WILL have to use it, and not knowing how it works can slow you down a ton. They will teach you how it works but you will be much better off if you know them going in. I did and it gave me a huge advantage over a large portion of the class who had only used Windows and were not comfortable on anything else.

Avatar image for glacialhelmnun
glacialhelmnun

58

Forum Posts

22

Wiki Points

0

Followers

Reviews: 0

User Lists: 0

#5  Edited By glacialhelmnun

You need to enjoy programming a whole lot.

You will definitely need calculus and linear algebra for a mandatory introduction to algorithms course in your second year. You will probably not use much of it after that.

You will probably find that the quality of instruction you get in your cs courses is considerably worse than for any of the other courses you take.

You are likely to enjoy programming a lot less at the end of your degree than you did going in.

Avatar image for audiobusting
audioBusting

2581

Forum Posts

5644

Wiki Points

0

Followers

Reviews: 4

User Lists: 26

I'm not gonna waste your time with a lengthy post, so I'm just gonna tell you to not be afraid. You go to school to learn things you're bad at safely. I've never coded much before in my life, but I took the leap 3 years ago into Comp. Sci. and it paid off now. The mathematics in CS is actually different than calculus etc so dont worry about that either.

Avatar image for donpixel
DonPixel

2867

Forum Posts

0

Wiki Points

0

Followers

Reviews: 0

User Lists: 0

#7  Edited By DonPixel

@audiobusting said:

I'm not gonna waste your time with a lengthy post, so I'm just gonna tell you to not be afraid. You go to school to learn things you're bad at safely. I've never coded much before in my life, but I took the leap 3 years ago into Comp. Sci. and it paid off now. The mathematics in CS is actually different than calculus etc so dont worry about that either.

yep this

don't be afraid lots of programers like to over-complicate everything, they will use terminology that sounds really complex but isn't necessarily a hard concept to grasp. Object Oriented programming was actually designed with the premise of being "easy" to understand. As an example polymorphism (sounds scary) it is basically you make a blue print code you can re use later on as program object, does it sound hard ? No, because its not.

As I said as I said I think the best advice its just go out and code some stuff, there are so many free resources you can't do wrong.

Avatar image for tycobb
TyCobb

2036

Forum Posts

90

Wiki Points

0

Followers

Reviews: 1

User Lists: 0

#8  Edited By TyCobb

@donpixel said:

don't be afraid lots of programers like to over-complicate everything, they will use terminology that sounds really complex but isn't necessarily a hard concept to grasp. Object Oriented programming was actually designed with the premise of being "easy" to understand. As an example polyphormism(sounds scary) it is basically you make a blue print code you can re use later on as program object, does it sound hard ? No, because its not.

But that's the fun of it... extensibility and re-usability dammit!

What's "Polyphormism"? =P

Avatar image for velamo05
velamo05

125

Forum Posts

0

Wiki Points

0

Followers

Reviews: 0

User Lists: 0

#9  Edited By velamo05

@donpixel@tycobb@ben_h@glacialhelmnun@audiobusting Thanks so much for all the feedback, guys! I truly appreciate it! I know it probably sounds like I may not be passionate enough, and maybe I'm not- I don't think I've really had enough experience with it all yet to determine if that's so (though I'd like to hope not), but I think that is mostly a result of me thinking this was something I could never do before until a while ago. I had this predetermined notion that you had to be some sort of genius to do anything in this field, but for those of you that pointed it out, if you dedicate yourself to something you can really learn anything, it just takes time and effort. Thanks again so much, for not only the hardcore realism of the situation, but the optimism. I know it is a broken record response, but being a blonde female, I don't typically get a lot of words of encouragement when I bring up the subject to my friends or family, so the reassurance is much appreciated.

Avatar image for afabs515
afabs515

2005

Forum Posts

0

Wiki Points

0

Followers

Reviews: 0

User Lists: 0

#10  Edited By afabs515

I am a Junior CS major right now. I'm enrolled at the University of Maryland, College Park, which is a top 20 CS school. After reading the responses above me, I can safely say that everyone here is giving you great and accurate information. Computer Science and programming in general isn't something you can really learn in a classroom; most of it is about how you approach problems. You learn basic data structures and problem-types in classes (along with some languages, but that goes without saying), but having a logical mindset is what is most useful. The math is mostly for some required weed-out courses, such as Algorithms, but after that, most math you use is super basic.

What's particularly great about CS as opposed to some other majors is that, at the risk of sounding like kind of a douche, the people in it past freshman-level courses tend to be fairly smart, as it is a pretty difficult major (the same can be said of most STEM majors). This is good because if you need help with a specific problem and just go to google, almost all the resources you find are reliable and super helpful. StackOverflow became my best friend in my weed-out courses. Don't be scared if you don't immediately know how to do something. If you can't figure it out after some thought, I guarantee you that someone has had the exact same problem you have, and you can easily find a wealth of resources to help you out.

One of the lines you'll probably hear a ton, if you haven't already, is that there are always jobs for CS majors. This is totally true. CS is a growing field, and there are more jobs opening up than there are people coming out of college with degrees. So if you work hard, I feel very confident in saying you'll have no problem finding a job out of college with an above-average starting salary.

Before you decide whether or not you want to pursue the major, I definitely recommend looking into some basic programming lessons. I advise you to work initially in Java (not Javascript; just Java), as your freshman classes will most likely be in Object-Oriented Programming (Java is an OO language). You should absolutely not pursue the major if you find you don't enjoy coding. It eventually becomes a ton of work and you will hate yourself if you don't like it.That being said, have fun with it! Try writing something useful for YOU as a side-project. My friend, who isn't even a CS major, wrote a Java program that keeps track of what Magic: The Gathering cards he owns and what decks they're in. It's not hard code, but it's really useful for him. Companies love that stuff, btw.

I know this post goes on forever, but I want to make sure I'm as helpful as possible. You don't have to build Facebook right out of the gate, and plenty of people are in the same position you are. Not everyone goes into college with experience in coding. That's what the 100-level classes are for :). If you have any questions about what the CS major is like, feel free to PM me. Good luck!

Avatar image for taunt
TaunT

105

Forum Posts

0

Wiki Points

0

Followers

Reviews: 0

User Lists: 0

I am a senior in Computer Science in the University of Santa Cruz. I totally agree with the idea DonPixel said, it's more of a craft than a science. It really depends who you are, I went in as a Computer Science: Game Design major and realized I didn't actually want that but wanted to try sticking it out in CS. For awhile I wasn't sure about it but I learned to love it as time went on. As you grow your skills, you are able to make more interesting things. I can't imagine wanting to do anything else now. If I was forced to be something else, I don't know what it would be.

As far as math goes. In our program you have to get through single dimensional calculus. Game Design majors had do some other extra math classes I think and Computer Engineers and Electrical Engineers have more Math hat I wouldn't want to do either. Problem-solving skills I think are something you develop with time but the other posts are right, you get it from doing and practice and less memorizing formula.

It's a ton of goddamn work, don't get me wrong. But most things worth doing are a lot of work. Online resources are plentiful(for most things) and the Math isn't really THAT big of a deal. I took those classes and learned the material, but at a moments notice I couldn't pull that stuff out and apply it. I can look it up when I need it and that's fine. This response isn't as long but feel free to PM me as well.

UNRELATED NOTE: On the bombcast, he whereabouts of John Romero has come up once or twice. I feel like maybe I should write them this. As I said, my school has a Game Design major at which John's wife, Brenda Romero is a professor. John Romero himself has also taught a class or two and does work for our school. My game design major friends who have had him as a teacher or even a guest lecturer say he has great insight on game design and really understands how to polish a game. I myself have never been to one of those lectures since I am straight CS but it sounds like it would be cool. Also he cut his hair.

Avatar image for philipduck
PhilipDuck

809

Forum Posts

19

Wiki Points

0

Followers

Reviews: 0

User Lists: 1

#12  Edited By PhilipDuck

Go for it I went into my computer science degree not having any experience in coding, as long as you keep at it and practice it one day just hits you and clicks! Good luck

Avatar image for white
white

1697

Forum Posts

47

Wiki Points

0

Followers

Reviews: 0

User Lists: 0

#13  Edited By white

Things you need to do well in Computer Science

  1. An open mind and willingness to learn

That's it really. And it applies to all majors.

All Computer Science undergraduates must take basic courses in Mathematics (Calculus, Linear Alge, Statistics, Discrete Mathematics) and Science (Physics, Biology and/or Chemistry). While you won't necessary use much of them unless you're in the field of Cryptography, Computational Theory, or 3D modelling, they are nonetheless unavoidable; so make sure you're comfortable in dealing with those topics if you wanna do well. To be honest, these will be probably some of the hardest-and-yet-least-used topics that you'll learn.

The "Science" in Computer Science (CS) is more of the Computational Theory. That is, in essence, learning how to exploit properties of various algorithms (methods of solving problems) and data structures (methods of storing/organizing information). Coding in CS is more about implementing these exploits in a systematic manner. You'll see that the emphasis is more on learning the "Science" than learning how to code really well (of course, a basic level of programming competence will be taught and is expected of you once you graduate).

The amount of programming you do is minimal, unless you're working on a project that asks for a deliverable (i.e. coding some software from scratch, with UI and everything). Most of the work is actually the planning and development of algorithms on paper. You would only touch code once your algorithm looks sound and if it is, minimal debugging is required.

CS is one of the few majors that changes the way you think into an almost robotic manner. You'll adopt a reductionist style of problem solving which is highly applicable to any field in life, not just related to computers.

@tycobb said:

@donpixel said:

don't be afraid lots of programers like to over-complicate everything, they will use terminology that sounds really complex but isn't necessarily a hard concept to grasp. Object Oriented programming was actually designed with the premise of being "easy" to understand. As an example polyphormism(sounds scary) it is basically you make a blue print code you can re use later on as program object, does it sound hard ? No, because its not.

But that's the fun of it... extensibility and re-usability dammit!

What's "Polyphormism"? =P

In OOP, polymorphism is the concept of having a function or interface that works for more than 1 input data type. Usually, function signatures are pretty fixed, like function(int a, int b). Polymorphism allows you to have function signatures like function(E e1, E e2) where E is any generic data structure.

Avatar image for ben_h
Ben_H

4833

Forum Posts

1628

Wiki Points

0

Followers

Reviews: 1

User Lists: 5

@afabs515 said:

What's particularly great about CS as opposed to some other majors is that, at the risk of sounding like kind of a douche, the people in it past freshman-level courses tend to be fairly smart, as it is a pretty difficult major (the same can be said of most STEM majors). This is good because if you need help with a specific problem and just go to google, almost all the resources you find are reliable and super helpful. StackOverflow became my best friend in my weed-out courses. Don't be scared if you don't immediately know how to do something. If you can't figure it out after some thought, I guarantee you that someone has had the exact same problem you have, and you can easily find a wealth of resources to help you out.

Yup, this is 100% correct. Google, StackOverflow and small programming forums will become your best friends for some of the tougher classes, especially when it comes to learning UNIX and some of the more obscure mathy stuff (luckily places like MIT, Stanford and a few others put PDFs of some of their math stuff online. That stuff was a life-saver for me. This one Stanford thing taught me in 2 pages what my professor couldn't with 10).

And yeah, those weed-out courses (I would say the discrete math and logic one is definitely in that category, at least at my school) are pretty brutal. I didn't do very well on the midterm (I got in the mid-60s) but I still was something like 8 points above average. He released a PDF of all of our marks at the end of the year organized by student number and it made me feel a lot better because most people had failed at least one or two assignments and got around 50% on the midterm, so I was actually doing pretty well comparatively.

My one lab instructor jokingly called my one lab the "How to use google effectively" lab because it was mostly about UNIX and a ton of stuff for that can be found with a quick Google search. Literally, he opened one of the labs with this:

No Caption Provided

As a result I now always remember how to create and extract from tarballs for some reason.

Avatar image for thesquarepear
thesquarepear

518

Forum Posts

91

Wiki Points

0

Followers

Reviews: 0

User Lists: 1

#15  Edited By thesquarepear

I don't know if there are different types of software educations where you live but here are my impressions of the two major ones Software Engineering and Computer Science

I would recommend you choose Software Engineering if you like coding and designing applications and you think of math as a tool.

If you think math is the only objective reality in the universe and you might like to spend a long time designing a new compression algorithm that is better than any existing ones then choose Computer Science.

Remember that most people struggle with math and noone can stop you from coding no matter your education.

See Additional info

*EDIT*

Regarding calculus I found the following here

Most universities, especially in North America, will teach calculus, often in first year. SEEK does not contain calculus, because it is not used by software engineers except when doing domain-specific work (e.g., for other engineers, for scientists, and for certain optimization tasks) and hence is not essential for all software engineering programs. However, there are a number of reasons why most programs will include calculus: 1) It is believed to help encourage abstract thinking and mathematical thinking in general; 2) Many statistics courses have a calculus prerequisite; and 3) Although needed in the workplace by only a small percentage of software engineers, it is just not readily learned in the workplace.

Avatar image for ekajarmstro
ekajarmstro

456

Forum Posts

21

Wiki Points

0

Followers

Reviews: 0

User Lists: 0

I'm taking Computer Science at UWaterloo (going into third year) and here it is part of the math faculty and it is pretty math heavy. However, I've been told you can go into first year knowing absolutely nothing about programming and still manage. http://www.wolframalpha.com/ is your friend for doing math assignments.

Avatar image for afabs515
afabs515

2005

Forum Posts

0

Wiki Points

0

Followers

Reviews: 0

User Lists: 0

@tycobb said:

@donpixel said:

don't be afraid lots of programers like to over-complicate everything, they will use terminology that sounds really complex but isn't necessarily a hard concept to grasp. Object Oriented programming was actually designed with the premise of being "easy" to understand. As an example polyphormism(sounds scary) it is basically you make a blue print code you can re use later on as program object, does it sound hard ? No, because its not.

But that's the fun of it... extensibility and re-usability dammit!

What's "Polyphormism"? =P

In OOP, polymorphism is the concept of having a function or interface that works for more than 1 input data type. Usually, function signatures are pretty fixed, like function(int a, int b). Polymorphism allows you to have function signatures like function(E e1, E e2) where E is any generic data structure.

To use a simple example, in Java, suppose you have a class "Person", which has methods for eat() and sleep(). But different types of people can do different things. For example, teachers can teach, but can't do accounting. So you can define two classes: Teacher and Accountant, which have teach() and doAccounting() methods respectively. They can also have different attributes. All teachers and accountants are Person's, but not all Person's are Teacher's or Accountant's. Thus, you can treat Teacher's and Accountant's as Person's. So if you had a List<Person> (a list of Person-type objects), you could add Teacher's, Accountant's, or any other class which extends Person. That's polymorphism in a nutshell.

Avatar image for i_stay_puft
I_Stay_Puft

5581

Forum Posts

1879

Wiki Points

0

Followers

Reviews: 0

User Lists: 5

Yep same here, I've met some people damn smart people who work as engineers without college degrees in that field and some that do. In all sense I think most jobs would prefer you to have the degree but if you have the knowledge and some sort of background and experience it isn't always a necessarily requirement.

Avatar image for tycobb
TyCobb

2036

Forum Posts

90

Wiki Points

0

Followers

Reviews: 1

User Lists: 0

@afabs515 said:

@tycobb said:

@donpixel said:

don't be afraid lots of programers like to over-complicate everything, they will use terminology that sounds really complex but isn't necessarily a hard concept to grasp. Object Oriented programming was actually designed with the premise of being "easy" to understand. As an example polyphormism(sounds scary) it is basically you make a blue print code you can re use later on as program object, does it sound hard ? No, because its not.

But that's the fun of it... extensibility and re-usability dammit!

What's "Polyphormism"? =P

In OOP, polymorphism is the concept of having a function or interface that works for more than 1 input data type. Usually, function signatures are pretty fixed, like function(int a, int b). Polymorphism allows you to have function signatures like function(E e1, E e2) where E is any generic data structure.

To use a simple example, in Java, suppose you have a class "Person", which has methods for eat() and sleep(). But different types of people can do different things. For example, teachers can teach, but can't do accounting. So you can define two classes: Teacher and Accountant, which have teach() and doAccounting() methods respectively. They can also have different attributes. All teachers and accountants are Person's, but not all Person's are Teacher's or Accountant's. Thus, you can treat Teacher's and Accountant's as Person's. So if you had a List<Person> (a list of Person-type objects), you could add Teacher's, Accountant's, or any other class which extends Person. That's polymorphism in a nutshell.

I was just making a joke. I know what Polymorphism is, but "Polyphormism" was said instead.

Avatar image for bollard
Bollard

8298

Forum Posts

118

Wiki Points

0

Followers

Reviews: 3

User Lists: 12

@velamo05: In the UK, most Computer Science students are expected to have very little coding experience, and most likely no formal teaching beforehand at all. So going in blind probably won't be a problem!

As for that maths side of it, yeah, maths is super important to the subject, but I have friends who haven't even done what we call Further Maths and are doing just fine. We do Computing, which our University classes as an Engineering degree. I'm sure if you look around you could find courses that are more practical and less theory based, which should have less of a reliance on maths.

@ben_h said:

My one lab instructor jokingly called my one lab the "How to use google effectively" lab because it was mostly about UNIX and a ton of stuff for that can be found with a quick Google search. Literally, he opened one of the labs with this:

No Caption Provided

As a result I now always remember how to create and extract from tarballs for some reason.

I still have no idea how to untar, and I use Linux exclusively at Uni. I just throw some combination of xzcvf at it and hopefully it works.

Avatar image for tycobb
TyCobb

2036

Forum Posts

90

Wiki Points

0

Followers

Reviews: 1

User Lists: 0

Yep same here, I've met some people damn smart people who work as engineers without college degrees in that field and some that do. In all sense I think most jobs would prefer you to have the degree but if you have the knowledge and some sort of background and experience it isn't always a necessarily requirement.

Most jobs are going to be X degree or X number of years related work experience in the posting.

After so many years (usually 5, but 7 is better) you don't need to worry about the college degree anymore if your resume doesn't look like crap and actually shows experience in what you are applying for. Plus a lot of places like to DEV test or see some of your code while you walk them through what you're doing.

My last interview was doing a test in front of 2 senior developers (because I am one as well) and the director while having to explain what I was doing while doing it. For reference that was my 3rd interview to get that job and it is not uncommon for there to be 4th. These are your time to shine so you can show how much you are worth considering most of these jobs do not list money on the posting and rarely do they throw out a hard number. It's usually "It won't be less than what you are making now" or "Between X and Y" during the first or 2nd interview.

Avatar image for afabs515
afabs515

2005

Forum Posts

0

Wiki Points

0

Followers

Reviews: 0

User Lists: 0

@tycobb said:

@afabs515 said:

@tycobb said:

@donpixel said:

don't be afraid lots of programers like to over-complicate everything, they will use terminology that sounds really complex but isn't necessarily a hard concept to grasp. Object Oriented programming was actually designed with the premise of being "easy" to understand. As an example polyphormism(sounds scary) it is basically you make a blue print code you can re use later on as program object, does it sound hard ? No, because its not.

But that's the fun of it... extensibility and re-usability dammit!

What's "Polyphormism"? =P

In OOP, polymorphism is the concept of having a function or interface that works for more than 1 input data type. Usually, function signatures are pretty fixed, like function(int a, int b). Polymorphism allows you to have function signatures like function(E e1, E e2) where E is any generic data structure.

To use a simple example, in Java, suppose you have a class "Person", which has methods for eat() and sleep(). But different types of people can do different things. For example, teachers can teach, but can't do accounting. So you can define two classes: Teacher and Accountant, which have teach() and doAccounting() methods respectively. They can also have different attributes. All teachers and accountants are Person's, but not all Person's are Teacher's or Accountant's. Thus, you can treat Teacher's and Accountant's as Person's. So if you had a List<Person> (a list of Person-type objects), you could add Teacher's, Accountant's, or any other class which extends Person. That's polymorphism in a nutshell.

I was just making a joke. I know what Polymorphism is, but "Polyphormism" was said instead.

oh haha. I didn't even notice that. Inattention to details ftw.

Avatar image for donpixel
DonPixel

2867

Forum Posts

0

Wiki Points

0

Followers

Reviews: 0

User Lists: 0

Avatar image for white
white

1697

Forum Posts

47

Wiki Points

0

Followers

Reviews: 0

User Lists: 0

@chavtheworld said:

@ben_h said:

My one lab instructor jokingly called my one lab the "How to use google effectively" lab because it was mostly about UNIX and a ton of stuff for that can be found with a quick Google search. Literally, he opened one of the labs with this:

No Caption Provided

As a result I now always remember how to create and extract from tarballs for some reason.

I still have no idea how to untar, and I use Linux exclusively at Uni. I just throw some combination of xzcvf at it and hopefully it works.

I'll just go "tar --help" or "man tar" if I'm in a shell-only environment; I still can't unpackage tar files if my life was dependent on it.

Luckily, modern Ubuntu and Fedora have nice GUI's that let me just RMB -> Unpackage here.

Avatar image for bushpusherr
bushpusherr

1080

Forum Posts

2

Wiki Points

0

Followers

Reviews: 0

User Lists: 6

#25  Edited By bushpusherr

If you can't imagine doing it yourself as a hobby in your free time, I wouldn't recommend pursuing coding in a greater capacity. It is a field definitely best learned through practice, and simply going through the motions enough to finish school assignments (even done well) will not be enough preparation for work. If you do find a continued interest in coding, I would highly recommend narrowing down a more specific field of interest that really motivates you to learn more (security, networking, web, graphics, games, etc, whatever speaks to you personally). My drive and motivation during my general undergraduate programming experience was night and day compared to after I shifted into game programming and graphics.

Avatar image for sergio
Sergio

3663

Forum Posts

0

Wiki Points

0

Followers

Reviews: 0

User Lists: 13

You don't really need a lot of math unless you're going into specific development or research jobs. I switched from civil engineering to computer science, and the former required a lot more math than the latter.

Avatar image for darthorange
DarthOrange

4232

Forum Posts

998

Wiki Points

0

Followers

Reviews: 7

User Lists: 19

Fuck hard sciences. Soft science all day everyday.

Avatar image for nevalis
nevalis

116

Forum Posts

0

Wiki Points

0

Followers

Reviews: 0

User Lists: 0

Also, depending on what field of programming you're leaning towards, it's a good idea to pick up SQL, which is basically a programming language for database manipulation.

This comes in various flavors: MySQL, Oracle, Microsoft SQL Server, etc., but thankfully all of them use the same relative syntax for INSERT, UPDATE, DELETE operations which is 90% of what you'd do.

Also also. If you're going to be doing more web applications (Python, PHP, .NET), it would be extremely beneficial to become well versed in CSS (Cascading Style Sheets). It's true purpose is to provide a clean way to structure an HTML page (colors, fonts, element positions, etc.), but one of the more popular javaScript frameworks (jQuery) uses the same reference syntax. So by learning one thing, you can more easily jump into the world of javaScript, which without a framework is much more cumbersome.