|
Thread Rules 1. This is not a "do my homework for me" thread. If you have specific questions, ask, but don't post an assignment or homework problem and expect an exact solution. 2. No recruiting for your cockamamie projects (you won't replace facebook with 3 dudes you found on the internet and $20) 3. If you can't articulate why a language is bad, don't start slinging shit about it. Just remember that nothing is worse than making CSS IE6 compatible. 4. Use [code] tags to format code blocks. |
On January 17 2014 11:58 Chocolate wrote: Hey I'm going to enter uni as a CS student soon and I was wondering if the following would be considered a good portfolio to work at over the next four years.
For each language that I know, 9 small projects, 5 medium projects, and one big one. I currently know Java and Python, and I'm looking at learning C++, C#, C, PHP, and Ruby (on rails). In addition, I would add every solution that I have made from project euler, hopefully at least 100 of them.
Small projects would be just simple computations, perhaps rudimentary physics solvers, and other basic implementations of science stuff. Maybe some basic encryption. Medium projects would be more developed simulators, maybe some games, and generally projects with neater interfaces than just the command terminal. Also, simple web stuff. Decryption as well. Big projects would be things like apps, websites, maybe an actual physics environment, things like that.
First is this a decent selection of languages if I want to keep my options open for web or more general software? Is it feasible to finish this all in four years working sparingly at a pace of around 5 hr per week? Also, is it generally acceptable to include things you made for a class in a portfolio? Thanks in advance. I have a feeling that all these stupid code/STEM PR and awareness programs are going to push a lot of scrubs into CS so I want to be one of the better candidates for internships and jobs. Just as a general principle, it's much better to focus on learning very few languages, and put much more focus on program structure and design. You're going to find out pretty quickly that a lot of projects and work give you ample time to learn the nuances of a language, and if you spend all your time learning multiple languages up front, you're going to have 50-80% of your skill set as dead weight for any given project.
On the flip side, if you focus on good design (as in planning, functionality, meaningful documentation, etc.) good developers will recognize you as a very valuable team candidate or member. These things are hard to learn and take a ton of time to get better with, and are actually extremely hard to come by in new programmers.
That being said, PHP would probably be a good language to learn on top of your other 2 that you already know. C++ will overlap so much with Python, and C# will overlap with Java. With those 3 (Python, Java, and PHP), you'll be able to tackle pretty much any problem that is thrown your way, with remarkable ease assuming you use the right language for the task.
|
On January 17 2014 14:05 WarSame wrote:Show nested quote +On January 17 2014 11:54 sluggaslamoo wrote:On January 17 2014 11:27 WarSame wrote: For checking if it will be in the paddle on the next cycle I used the current position and the speed. I first check whether the current position was outside the paddle. Then I checked if the next position was inside the paddle. If it was I bounced the ball off of the paddle. This is the same as only checking once, but moving the ball after the check. On January 17 2014 11:27 WarSame wrote: For checking if it will be in the paddle on the next cycle I used the current position and the speed. I first check whether the current position was outside the paddle. Then I checked if the next position was inside the paddle. If it was I bounced the ball off of the paddle.
EDIT: So it's close to what you said. In my case it interpolated between the 2 points of the paddle location and the paddle thickness plus location. Are you sure its interpolation and not just checking two points? You're right. It's just checking points. I'm confused as to how you would do interpolation though? I've never seen that in any of my classes(which I'm increasingly believing are a waste of time and money).
Actually its a lot more to do with geometry.
Just check if the line from where the ball WAS (from the last frame) and where the ball IS intersects with the paddle (its kind of a waste check the whole rectangle when its so thin, so better to just pretend that the paddle is flat).
http://www.mathopenref.com/coordintersection.html
|
On January 17 2014 14:08 aksfjh wrote:Show nested quote +On January 17 2014 11:58 Chocolate wrote: Hey I'm going to enter uni as a CS student soon and I was wondering if the following would be considered a good portfolio to work at over the next four years.
For each language that I know, 9 small projects, 5 medium projects, and one big one. I currently know Java and Python, and I'm looking at learning C++, C#, C, PHP, and Ruby (on rails). In addition, I would add every solution that I have made from project euler, hopefully at least 100 of them.
Small projects would be just simple computations, perhaps rudimentary physics solvers, and other basic implementations of science stuff. Maybe some basic encryption. Medium projects would be more developed simulators, maybe some games, and generally projects with neater interfaces than just the command terminal. Also, simple web stuff. Decryption as well. Big projects would be things like apps, websites, maybe an actual physics environment, things like that.
First is this a decent selection of languages if I want to keep my options open for web or more general software? Is it feasible to finish this all in four years working sparingly at a pace of around 5 hr per week? Also, is it generally acceptable to include things you made for a class in a portfolio? Thanks in advance. I have a feeling that all these stupid code/STEM PR and awareness programs are going to push a lot of scrubs into CS so I want to be one of the better candidates for internships and jobs. Just as a general principle, it's much better to focus on learning very few languages, and put much more focus on program structure and design. You're going to find out pretty quickly that a lot of projects and work give you ample time to learn the nuances of a language, and if you spend all your time learning multiple languages up front, you're going to have 50-80% of your skill set as dead weight for any given project. On the flip side, if you focus on good design (as in planning, functionality, meaningful documentation, etc.) good developers will recognize you as a very valuable team candidate or member. These things are hard to learn and take a ton of time to get better with, and are actually extremely hard to come by in new programmers. Exactly! That is why I always shy away from saying "you should learn language X" because in the end it is all simply the same concepts written with different syntax around it (of course there are exceptions like purely functional languages and logic-based languages+ Show Spoiler +thisLanguageIsAnnoyingToWorkWith('Prolog'). true . But for the basics, a for loop is a for loop is a for loop, no matter the language).
A company would rather have someone who has a rock solid understanding of concepts, can solve problems in a timely fashion, and actually knows how to create readable and logically laid out code than someone who can do some oddball, edgecase thing with Java that will only pop up once in a blue moon. There's a reason universities force you to take classes on programming practices, and it isn't to bore you (I know at my uni, we have a class where we are taught proper practices for version control, documentation, and code cleanliness. Assignments were more heavily marked on the layout of our code and how well it was documented than if it actually worked or not). Sadly, many people forget all of that as soon as the class is done, so remembering it will be a definite advantage.
If you know how object oriented works and have used any single language built around the concepts of OO, you can probably teach yourself another one in a day. I learned Java outside of the swing stuff (still hate swing) in far less time than that. I just view basic Java as C++ with stupid syntax and a bunch of built in crap with even more stupid names.
Turing Machines!
edit: and for the comment OP made about the influx of people due to STEM/CS promotion. Don't worry, they'll just get weeded out with everyone else in the tough classes. There might be a couple more people by the end but that's it. When I started it at my university it was the largest first year of CS students they had ever had. By the start of second term of second year the number had shrunk back to normal. The same thing happened the next year too. People see the PR/promotion and get dollar signs in their eyes, but once they actually get past the first year they realize that it isn't as easy as they anticipated, especially once they hit theoretical computer science. Math symbols up the wazoo. I love theoretical computer science. We're doing automata right now and it is fascinating.
|
I think at some point everybody should make time to learn one functional language. One, many of their aspects are finding their way into imperative languages and are great help if you know how to leverage them. Second, functional languages and TDD mesh pretty well.
|
On January 17 2014 14:05 WarSame wrote:Show nested quote +On January 17 2014 11:54 sluggaslamoo wrote:On January 17 2014 11:27 WarSame wrote: For checking if it will be in the paddle on the next cycle I used the current position and the speed. I first check whether the current position was outside the paddle. Then I checked if the next position was inside the paddle. If it was I bounced the ball off of the paddle. This is the same as only checking once, but moving the ball after the check. On January 17 2014 11:27 WarSame wrote: For checking if it will be in the paddle on the next cycle I used the current position and the speed. I first check whether the current position was outside the paddle. Then I checked if the next position was inside the paddle. If it was I bounced the ball off of the paddle.
EDIT: So it's close to what you said. In my case it interpolated between the 2 points of the paddle location and the paddle thickness plus location. Are you sure its interpolation and not just checking two points? You're right. It's just checking points. I'm confused as to how you would do interpolation though? I've never seen that in any of my classes(which I'm increasingly believing are a waste of time and money). It depends on the game. Interpolation is a waste of time if it doesn't matter. If your paddle is thick enough and the ball is slow enough, you're fine, it will never actually pass through the paddle. However, when it actually happens, it's quite an annoying bug to deal with unless you realize what's going on, because it might feel random and hard to reproduce.
There are two ways to deal with it: 1. Calculate the path and see if there was an intersection. This is the best way to do it, but hardest to implement, requires some decent knowledge of geometry and trigonometry I would suppose. 2. Like a physics engine, make sure logic is determinant, check milliseconds each loop, send in the time in the updates and make sure the time sent into the updates is always the same (by skipping logic if it's too fast, waiting for it etc, the same amount of milliseconds should be sent in each time). That way, you can easily calculate the acceptable speed of the ball compared to the size of the paddle etc, because the movement of the ball is now decided 100% by the speed, not by fluctuations in the speed of your program.
|
I took the easy way out and simply made the paddles thicker. Thanks for the suggestion. Lowering the speed of the ball wasn't a good option in my opinion, because I would have had to raise the occurence rate of the heartbeat cycle which means the AI would have been extremely strong.
|
On January 17 2014 14:52 Ben... wrote: I just view basic Java as C++ with stupid syntax and a bunch of built in crap with even more stupid names.
Strangely, I view C++ OOP as Java with stupid syntax. I don't know why you don't like Java's syntax. It's so easy!
|
TLADT24920 Posts
On January 17 2014 16:05 mcc wrote: I think at some point everybody should make time to learn one functional language. One, many of their aspects are finding their way into imperative languages and are great help if you know how to leverage them. Second, functional languages and TDD mesh pretty well. what's defined as functional language? java? c? c++?
On January 18 2014 04:48 darkness wrote:Show nested quote +On January 17 2014 14:52 Ben... wrote: I just view basic Java as C++ with stupid syntax and a bunch of built in crap with even more stupid names. Strangely, I view C++ OOP as Java with stupid syntax.  I don't know why you don't like Java's syntax. It's so easy! I always viewed C as the more superior one On a more serious note, I think he feels more in control with C++, at least I felt that way as well. Most with C, least with java when I used to program.
|
On January 18 2014 08:14 BigFan wrote:Show nested quote +On January 17 2014 16:05 mcc wrote: I think at some point everybody should make time to learn one functional language. One, many of their aspects are finding their way into imperative languages and are great help if you know how to leverage them. Second, functional languages and TDD mesh pretty well. what's defined as functional language? java? c? c++? Show nested quote +On January 18 2014 04:48 darkness wrote:On January 17 2014 14:52 Ben... wrote: I just view basic Java as C++ with stupid syntax and a bunch of built in crap with even more stupid names. Strangely, I view C++ OOP as Java with stupid syntax.  I don't know why you don't like Java's syntax. It's so easy! I always viewed C as the more superior one  On a more serious note, I think he feels more in control with C++, at least I felt that way as well. Most with C, least with java when I used to program.
Java is OOP, it's far from a functional language.
Read more: http://c2.com/cgi/wiki?FunctionalProgramming
|
TLADT24920 Posts
On January 18 2014 08:20 darkness wrote:Show nested quote +On January 18 2014 08:14 BigFan wrote:On January 17 2014 16:05 mcc wrote: I think at some point everybody should make time to learn one functional language. One, many of their aspects are finding their way into imperative languages and are great help if you know how to leverage them. Second, functional languages and TDD mesh pretty well. what's defined as functional language? java? c? c++? On January 18 2014 04:48 darkness wrote:On January 17 2014 14:52 Ben... wrote: I just view basic Java as C++ with stupid syntax and a bunch of built in crap with even more stupid names. Strangely, I view C++ OOP as Java with stupid syntax.  I don't know why you don't like Java's syntax. It's so easy! I always viewed C as the more superior one  On a more serious note, I think he feels more in control with C++, at least I felt that way as well. Most with C, least with java when I used to program. Java is OOP, it's far from a functional language. Read more: http://c2.com/cgi/wiki?FunctionalProgramming I've only ever heard of Opal and Ruby I think or at least those two ring a bell for some reason. Didn't realize there was that many T.T Good point, java is OOP. Been a long time since I've programmed so I've kinda forgotten everything. At least I still remember this little gem lol: + Show Spoiler + for (int i=0;iSystem.out.println("Bad, right?"); }
|
On January 17 2014 14:08 aksfjh wrote:Show nested quote +On January 17 2014 11:58 Chocolate wrote: Hey I'm going to enter uni as a CS student soon and I was wondering if the following would be considered a good portfolio to work at over the next four years.
For each language that I know, 9 small projects, 5 medium projects, and one big one. I currently know Java and Python, and I'm looking at learning C++, C#, C, PHP, and Ruby (on rails). In addition, I would add every solution that I have made from project euler, hopefully at least 100 of them.
Small projects would be just simple computations, perhaps rudimentary physics solvers, and other basic implementations of science stuff. Maybe some basic encryption. Medium projects would be more developed simulators, maybe some games, and generally projects with neater interfaces than just the command terminal. Also, simple web stuff. Decryption as well. Big projects would be things like apps, websites, maybe an actual physics environment, things like that.
First is this a decent selection of languages if I want to keep my options open for web or more general software? Is it feasible to finish this all in four years working sparingly at a pace of around 5 hr per week? Also, is it generally acceptable to include things you made for a class in a portfolio? Thanks in advance. I have a feeling that all these stupid code/STEM PR and awareness programs are going to push a lot of scrubs into CS so I want to be one of the better candidates for internships and jobs. Just as a general principle, it's much better to focus on learning very few languages, and put much more focus on program structure and design. You're going to find out pretty quickly that a lot of projects and work give you ample time to learn the nuances of a language, and if you spend all your time learning multiple languages up front, you're going to have 50-80% of your skill set as dead weight for any given project. On the flip side, if you focus on good design (as in planning, functionality, meaningful documentation, etc.) good developers will recognize you as a very valuable team candidate or member. These things are hard to learn and take a ton of time to get better with, and are actually extremely hard to come by in new programmers. That being said, PHP would probably be a good language to learn on top of your other 2 that you already know. C++ will overlap so much with Python, and C# will overlap with Java. With those 3 (Python, Java, and PHP), you'll be able to tackle pretty much any problem that is thrown your way, with remarkable ease assuming you use the right language for the task. The thing about structure and design is that, to me, it is much more boring of a topic to teach myself than the libraries and mechanics of languages. Is it bad to just plan on learning that stuff in classes? I agree with you that learning languages isn't really that big of a deal (though starting with Python and going to an assembly language would be... difficult), but I'm worried that employers would be looking to hire people that already know how to code in certain languages. Is this common practice? I definitely know that normal people that do not code are often impressed by "oh look, he knows all these languages 11!" If you could tell me if this somehow transfers to the workplace hiring process, I'd be appreciative.
So, when I'm making a portfolio, do you think that for each and every project I should create a .txt or excel spreadsheet giving a basic layout of what the program does? Thanks for the advice, by the way.
On January 17 2014 14:52 Ben... wrote:Show nested quote +On January 17 2014 14:08 aksfjh wrote:On January 17 2014 11:58 Chocolate wrote: Hey I'm going to enter uni as a CS student soon and I was wondering if the following would be considered a good portfolio to work at over the next four years.
For each language that I know, 9 small projects, 5 medium projects, and one big one. I currently know Java and Python, and I'm looking at learning C++, C#, C, PHP, and Ruby (on rails). In addition, I would add every solution that I have made from project euler, hopefully at least 100 of them.
Small projects would be just simple computations, perhaps rudimentary physics solvers, and other basic implementations of science stuff. Maybe some basic encryption. Medium projects would be more developed simulators, maybe some games, and generally projects with neater interfaces than just the command terminal. Also, simple web stuff. Decryption as well. Big projects would be things like apps, websites, maybe an actual physics environment, things like that.
First is this a decent selection of languages if I want to keep my options open for web or more general software? Is it feasible to finish this all in four years working sparingly at a pace of around 5 hr per week? Also, is it generally acceptable to include things you made for a class in a portfolio? Thanks in advance. I have a feeling that all these stupid code/STEM PR and awareness programs are going to push a lot of scrubs into CS so I want to be one of the better candidates for internships and jobs. Just as a general principle, it's much better to focus on learning very few languages, and put much more focus on program structure and design. You're going to find out pretty quickly that a lot of projects and work give you ample time to learn the nuances of a language, and if you spend all your time learning multiple languages up front, you're going to have 50-80% of your skill set as dead weight for any given project. On the flip side, if you focus on good design (as in planning, functionality, meaningful documentation, etc.) good developers will recognize you as a very valuable team candidate or member. These things are hard to learn and take a ton of time to get better with, and are actually extremely hard to come by in new programmers. Exactly! That is why I always shy away from saying "you should learn language X" because in the end it is all simply the same concepts written with different syntax around it (of course there are exceptions like purely functional languages and logic-based languages + Show Spoiler +thisLanguageIsAnnoyingToWorkWith('Prolog'). true. But for the basics, a for loop is a for loop is a for loop, no matter the language). A company would rather have someone who has a rock solid understanding of concepts, can solve problems in a timely fashion, and actually knows how to create readable and logically laid out code than someone who can do some oddball, edgecase thing with Java that will only pop up once in a blue moon. There's a reason universities force you to take classes on programming practices, and it isn't to bore you (I know at my uni, we have a class where we are taught proper practices for version control, documentation, and code cleanliness. Assignments were more heavily marked on the layout of our code and how well it was documented than if it actually worked or not). Sadly, many people forget all of that as soon as the class is done, so remembering it will be a definite advantage. If you know how object oriented works and have used any single language built around the concepts of OO, you can probably teach yourself another one in a day. I learned Java outside of the swing stuff (still hate swing) in far less time than that. I just view basic Java as C++ with stupid syntax and a bunch of built in crap with even more stupid names. Turing Machines! edit: and for the comment OP made about the influx of people due to STEM/CS promotion. Don't worry, they'll just get weeded out with everyone else in the tough classes. There might be a couple more people by the end but that's it. When I started it at my university it was the largest first year of CS students they had ever had. By the start of second term of second year the number had shrunk back to normal. The same thing happened the next year too. People see the PR/promotion and get dollar signs in their eyes, but once they actually get past the first year they realize that it isn't as easy as they anticipated, especially once they hit theoretical computer science. Math symbols up the wazoo. I love theoretical computer science. We're doing automata right now and it is fascinating. Oh I'm not concerning myself with the weird shortcuts there are in every language, but rather the basic layout (OO, procedural, how pointers and garbage collection are handled, fundamental syntax differences (beyond superficiality), etc.).
I'm taking a CS class (considered the equivalent of a two year uni course) right now based around Java and I think I get what you mean about weeding out. Most of my friends and I all are getting super high grades, but about half the class gets pretty poor ones in the D-C range. We lost about half the class between semesters, and we haven't even done the more mathy stuff yet (we are just starting searches and sorting, big O). I hope you're right about most people getting weeded out because I feel like most of these "I wanna make vidya gaemz lol" people aren't the kind of people I would like to work with.
BTW my friend is setting me up with an internship for a company that (I think) makes web pages. I'm excited even though the pay is only like 40% more than minimum wage.
|
Hello, I'm fairly new to Java, and I have been stuck understanding somewhat of concepts.
So, the main (problem) concept is about using methods/constructors/variables from different class to another... For Example, (https://docs.google.com/file/d/0B17THXdfP8JwLTBIMUdWQkszWmM/edit)
There are 3 classes and under ClassRoom class, it has " Arraylist<Student> roster ".
Does the Arraylist roster have all the methods under Student Class? Meaning it can do - roster.getID(); and roster.getRoom(); ? If not, how does the arraylist roster have access methods or do something from Student? Methods under Student Class are used by whom? (how?)
OR am I totally off?
Can someone please explain what uses what methods and etc under which class?
Gahh.... Confusing!
Thanks. I appreciate it.
|
On January 18 2014 13:18 TimKim0713 wrote: Hello, I'm fairly new to Java, and I have been stuck understanding somewhat of concepts.
So, the main (problem) concept is about using methods/constructors/variables from different class to another... For Example, (https://docs.google.com/file/d/0B17THXdfP8JwLTBIMUdWQkszWmM/edit)
There are 3 classes and under ClassRoom class, it has " Arraylist<Student> roster ".
Does the Arraylist roster have all the methods under Student Class? Meaning it can do - roster.getID(); and roster.getRoom(); ? If not, how does the arraylist roster have access methods or do something from Student? Methods under Student Class are used by whom? (how?)
OR am I totally off?
Can someone please explain what uses what methods and etc under which class?
Gahh.... Confusing!
Thanks. I appreciate it.
No, the ArrayList doesn't have access to the Student methods - but each of the Students in the list do. To access them, you have a couple options.
In order to get a specific student from the list, you use ArrayList.at(int index), which takes in the index (just like in a normal array - starting at zero) and gives you back the object. Like so:
Student s = roster.at(1); s.getID(); s.getRoom();
You can also get the index of a specific student with ArrayList.indexOf(Object o), which will find you the index of the student that matches the one you pass it.
To loop over them, you can use the iterator() function to get you an iterator to the objects in the list, in order - an iterator is basically just an object that has a reference to the next item in the list (and functions to get that item), which you then cast to the type you have stored in the list like so:
Iterator i = roster.iterator(); while (i.hasNext()) { Student s = (Student)i.next(); s.getRoom(); s.getID(); }
Or more simply, you can use a foreach loop:
for (Student s: roster) { s.getRoom(); s.getID(); }
e: or, you can use the index method as well, like:
for (int i = 0; i < roster.size(); ++i) { Student s = roster.get(i); s.getRoom(); s.getID(); }
e2: for more reading about what methods you can use on ArrayLists (this is only a couple of them!) see the docs.
|
On January 18 2014 13:18 TimKim0713 wrote: Hello, I'm fairly new to Java, and I have been stuck understanding somewhat of concepts.
So, the main (problem) concept is about using methods/constructors/variables from different class to another... For Example, (https://docs.google.com/file/d/0B17THXdfP8JwLTBIMUdWQkszWmM/edit)
There are 3 classes and under ClassRoom class, it has " Arraylist<Student> roster ".
Does the Arraylist roster have all the methods under Student Class? Meaning it can do - roster.getID(); and roster.getRoom(); ? If not, how does the arraylist roster have access methods or do something from Student? Methods under Student Class are used by whom? (how?)
OR am I totally off?
Can someone please explain what uses what methods and etc under which class?
Gahh.... Confusing!
Thanks. I appreciate it.
You need to understand that java is mostly about references to objects. The ArrayList is an object itself and contains references (the location where the objects are stored in the memory) to other objects, in this case from the student class. So if you already have the references stored in the arraylist, the objects are already created. To access them you can define a new reference to the object in question. For example Student s = roster.get(0); No new object is created here, the only thing that happens is that s is now a reference to the object that is also referenced in the ArrayList (which it still does after this call). Now you can work with that objects methods by using s.getID(); Or, you could have done it directly with roster.get(0).getID();
Student s = new Student(); this on the other hand, would create a new object of the student class which gets referenced by s.
|
On January 18 2014 09:42 Chocolate wrote:Show nested quote +On January 17 2014 14:08 aksfjh wrote:On January 17 2014 11:58 Chocolate wrote: Hey I'm going to enter uni as a CS student soon and I was wondering if the following would be considered a good portfolio to work at over the next four years.
For each language that I know, 9 small projects, 5 medium projects, and one big one. I currently know Java and Python, and I'm looking at learning C++, C#, C, PHP, and Ruby (on rails). In addition, I would add every solution that I have made from project euler, hopefully at least 100 of them.
Small projects would be just simple computations, perhaps rudimentary physics solvers, and other basic implementations of science stuff. Maybe some basic encryption. Medium projects would be more developed simulators, maybe some games, and generally projects with neater interfaces than just the command terminal. Also, simple web stuff. Decryption as well. Big projects would be things like apps, websites, maybe an actual physics environment, things like that.
First is this a decent selection of languages if I want to keep my options open for web or more general software? Is it feasible to finish this all in four years working sparingly at a pace of around 5 hr per week? Also, is it generally acceptable to include things you made for a class in a portfolio? Thanks in advance. I have a feeling that all these stupid code/STEM PR and awareness programs are going to push a lot of scrubs into CS so I want to be one of the better candidates for internships and jobs. Just as a general principle, it's much better to focus on learning very few languages, and put much more focus on program structure and design. You're going to find out pretty quickly that a lot of projects and work give you ample time to learn the nuances of a language, and if you spend all your time learning multiple languages up front, you're going to have 50-80% of your skill set as dead weight for any given project. On the flip side, if you focus on good design (as in planning, functionality, meaningful documentation, etc.) good developers will recognize you as a very valuable team candidate or member. These things are hard to learn and take a ton of time to get better with, and are actually extremely hard to come by in new programmers. That being said, PHP would probably be a good language to learn on top of your other 2 that you already know. C++ will overlap so much with Python, and C# will overlap with Java. With those 3 (Python, Java, and PHP), you'll be able to tackle pretty much any problem that is thrown your way, with remarkable ease assuming you use the right language for the task. The thing about structure and design is that, to me, it is much more boring of a topic to teach myself than the libraries and mechanics of languages. Is it bad to just plan on learning that stuff in classes? I agree with you that learning languages isn't really that big of a deal (though starting with Python and going to an assembly language would be... difficult), but I'm worried that employers would be looking to hire people that already know how to code in certain languages. Is this common practice? I definitely know that normal people that do not code are often impressed by "oh look, he knows all these languages 11!" If you could tell me if this somehow transfers to the workplace hiring process, I'd be appreciative. So, when I'm making a portfolio, do you think that for each and every project I should create a .txt or excel spreadsheet giving a basic layout of what the program does? Thanks for the advice, by the way. Show nested quote +On January 17 2014 14:52 Ben... wrote:On January 17 2014 14:08 aksfjh wrote:On January 17 2014 11:58 Chocolate wrote: Hey I'm going to enter uni as a CS student soon and I was wondering if the following would be considered a good portfolio to work at over the next four years.
For each language that I know, 9 small projects, 5 medium projects, and one big one. I currently know Java and Python, and I'm looking at learning C++, C#, C, PHP, and Ruby (on rails). In addition, I would add every solution that I have made from project euler, hopefully at least 100 of them.
Small projects would be just simple computations, perhaps rudimentary physics solvers, and other basic implementations of science stuff. Maybe some basic encryption. Medium projects would be more developed simulators, maybe some games, and generally projects with neater interfaces than just the command terminal. Also, simple web stuff. Decryption as well. Big projects would be things like apps, websites, maybe an actual physics environment, things like that.
First is this a decent selection of languages if I want to keep my options open for web or more general software? Is it feasible to finish this all in four years working sparingly at a pace of around 5 hr per week? Also, is it generally acceptable to include things you made for a class in a portfolio? Thanks in advance. I have a feeling that all these stupid code/STEM PR and awareness programs are going to push a lot of scrubs into CS so I want to be one of the better candidates for internships and jobs. Just as a general principle, it's much better to focus on learning very few languages, and put much more focus on program structure and design. You're going to find out pretty quickly that a lot of projects and work give you ample time to learn the nuances of a language, and if you spend all your time learning multiple languages up front, you're going to have 50-80% of your skill set as dead weight for any given project. On the flip side, if you focus on good design (as in planning, functionality, meaningful documentation, etc.) good developers will recognize you as a very valuable team candidate or member. These things are hard to learn and take a ton of time to get better with, and are actually extremely hard to come by in new programmers. Exactly! That is why I always shy away from saying "you should learn language X" because in the end it is all simply the same concepts written with different syntax around it (of course there are exceptions like purely functional languages and logic-based languages + Show Spoiler +thisLanguageIsAnnoyingToWorkWith('Prolog'). true. But for the basics, a for loop is a for loop is a for loop, no matter the language). A company would rather have someone who has a rock solid understanding of concepts, can solve problems in a timely fashion, and actually knows how to create readable and logically laid out code than someone who can do some oddball, edgecase thing with Java that will only pop up once in a blue moon. There's a reason universities force you to take classes on programming practices, and it isn't to bore you (I know at my uni, we have a class where we are taught proper practices for version control, documentation, and code cleanliness. Assignments were more heavily marked on the layout of our code and how well it was documented than if it actually worked or not). Sadly, many people forget all of that as soon as the class is done, so remembering it will be a definite advantage. If you know how object oriented works and have used any single language built around the concepts of OO, you can probably teach yourself another one in a day. I learned Java outside of the swing stuff (still hate swing) in far less time than that. I just view basic Java as C++ with stupid syntax and a bunch of built in crap with even more stupid names. Turing Machines! edit: and for the comment OP made about the influx of people due to STEM/CS promotion. Don't worry, they'll just get weeded out with everyone else in the tough classes. There might be a couple more people by the end but that's it. When I started it at my university it was the largest first year of CS students they had ever had. By the start of second term of second year the number had shrunk back to normal. The same thing happened the next year too. People see the PR/promotion and get dollar signs in their eyes, but once they actually get past the first year they realize that it isn't as easy as they anticipated, especially once they hit theoretical computer science. Math symbols up the wazoo. I love theoretical computer science. We're doing automata right now and it is fascinating. Oh I'm not concerning myself with the weird shortcuts there are in every language, but rather the basic layout (OO, procedural, how pointers and garbage collection are handled, fundamental syntax differences (beyond superficiality), etc.). I'm taking a CS class (considered the equivalent of a two year uni course) right now based around Java and I think I get what you mean about weeding out. Most of my friends and I all are getting super high grades, but about half the class gets pretty poor ones in the D-C range. We lost about half the class between semesters, and we haven't even done the more mathy stuff yet (we are just starting searches and sorting, big O). I hope you're right about most people getting weeded out because I feel like most of these "I wanna make vidya gaemz lol" people aren't the kind of people I would like to work with. BTW my friend is setting me up with an internship for a company that (I think) makes web pages. I'm excited even though the pay is only like 40% more than minimum wage.
Your employer is not going to go through all of your projects to read what they are. That's what your resume is for. A file describing your project is the purpose of a README file, which is used to help document things so people can at a glance at what your project is.
Good employers can look for 2 things in their candidates - 1, that they have very relevant experience with the specific technology they work on, i.e. past Android experience when the employer is recruiting for an Android position, or 2, that the candidate can pick up the specific technology the employer is working on very quickly, i.e. having strong Java/C++/C#/OOP experience alongside strong CS foundations and able to pick up technologies quickly when applying to an Android position.
I was able to hop on to an iOS7 project and was up to speed after 1.5 days. No previous iOS or Mac OS experience. It's not always about whether you know the specific technology, but whether you can pick it up quickly as well, and to do that you need strong CS fundamentals.
If you know 15 languages and you're not good in any one of them, I wouldn't hire you, or even interview you. It takes no time for good programmers to pick up a fundamentally similar language, which is why people tell you to choose a OOP language (C#, Java, C++ somewhat) and a functional language (Scheme, Haskell, Lisp), and master those, instead of jumping all over the place. If you want to jump all over the place, make sure that's because you want to leverage the specific technologies that language offers over another, such as .Net or Python's huge package library. If you just want to learn something new because you're bored, you can also jump all over the place, but don't do juggle 10 languages simply because you want to have a project in each one. Have 2-3 great projects each in 2-3 difference languages instead.
Finally, stop being such an asshole and acting superior to people. You've had two posts now where you put down others and act like you're better than them. Be a bit more humble and a lot less dicky.
|
On January 18 2014 14:33 Blisse wrote:Show nested quote +On January 18 2014 09:42 Chocolate wrote:On January 17 2014 14:08 aksfjh wrote:On January 17 2014 11:58 Chocolate wrote: Hey I'm going to enter uni as a CS student soon and I was wondering if the following would be considered a good portfolio to work at over the next four years.
For each language that I know, 9 small projects, 5 medium projects, and one big one. I currently know Java and Python, and I'm looking at learning C++, C#, C, PHP, and Ruby (on rails). In addition, I would add every solution that I have made from project euler, hopefully at least 100 of them.
Small projects would be just simple computations, perhaps rudimentary physics solvers, and other basic implementations of science stuff. Maybe some basic encryption. Medium projects would be more developed simulators, maybe some games, and generally projects with neater interfaces than just the command terminal. Also, simple web stuff. Decryption as well. Big projects would be things like apps, websites, maybe an actual physics environment, things like that.
First is this a decent selection of languages if I want to keep my options open for web or more general software? Is it feasible to finish this all in four years working sparingly at a pace of around 5 hr per week? Also, is it generally acceptable to include things you made for a class in a portfolio? Thanks in advance. I have a feeling that all these stupid code/STEM PR and awareness programs are going to push a lot of scrubs into CS so I want to be one of the better candidates for internships and jobs. Just as a general principle, it's much better to focus on learning very few languages, and put much more focus on program structure and design. You're going to find out pretty quickly that a lot of projects and work give you ample time to learn the nuances of a language, and if you spend all your time learning multiple languages up front, you're going to have 50-80% of your skill set as dead weight for any given project. On the flip side, if you focus on good design (as in planning, functionality, meaningful documentation, etc.) good developers will recognize you as a very valuable team candidate or member. These things are hard to learn and take a ton of time to get better with, and are actually extremely hard to come by in new programmers. That being said, PHP would probably be a good language to learn on top of your other 2 that you already know. C++ will overlap so much with Python, and C# will overlap with Java. With those 3 (Python, Java, and PHP), you'll be able to tackle pretty much any problem that is thrown your way, with remarkable ease assuming you use the right language for the task. The thing about structure and design is that, to me, it is much more boring of a topic to teach myself than the libraries and mechanics of languages. Is it bad to just plan on learning that stuff in classes? I agree with you that learning languages isn't really that big of a deal (though starting with Python and going to an assembly language would be... difficult), but I'm worried that employers would be looking to hire people that already know how to code in certain languages. Is this common practice? I definitely know that normal people that do not code are often impressed by "oh look, he knows all these languages 11!" If you could tell me if this somehow transfers to the workplace hiring process, I'd be appreciative. So, when I'm making a portfolio, do you think that for each and every project I should create a .txt or excel spreadsheet giving a basic layout of what the program does? Thanks for the advice, by the way. On January 17 2014 14:52 Ben... wrote:On January 17 2014 14:08 aksfjh wrote:On January 17 2014 11:58 Chocolate wrote: Hey I'm going to enter uni as a CS student soon and I was wondering if the following would be considered a good portfolio to work at over the next four years.
For each language that I know, 9 small projects, 5 medium projects, and one big one. I currently know Java and Python, and I'm looking at learning C++, C#, C, PHP, and Ruby (on rails). In addition, I would add every solution that I have made from project euler, hopefully at least 100 of them.
Small projects would be just simple computations, perhaps rudimentary physics solvers, and other basic implementations of science stuff. Maybe some basic encryption. Medium projects would be more developed simulators, maybe some games, and generally projects with neater interfaces than just the command terminal. Also, simple web stuff. Decryption as well. Big projects would be things like apps, websites, maybe an actual physics environment, things like that.
First is this a decent selection of languages if I want to keep my options open for web or more general software? Is it feasible to finish this all in four years working sparingly at a pace of around 5 hr per week? Also, is it generally acceptable to include things you made for a class in a portfolio? Thanks in advance. I have a feeling that all these stupid code/STEM PR and awareness programs are going to push a lot of scrubs into CS so I want to be one of the better candidates for internships and jobs. Just as a general principle, it's much better to focus on learning very few languages, and put much more focus on program structure and design. You're going to find out pretty quickly that a lot of projects and work give you ample time to learn the nuances of a language, and if you spend all your time learning multiple languages up front, you're going to have 50-80% of your skill set as dead weight for any given project. On the flip side, if you focus on good design (as in planning, functionality, meaningful documentation, etc.) good developers will recognize you as a very valuable team candidate or member. These things are hard to learn and take a ton of time to get better with, and are actually extremely hard to come by in new programmers. Exactly! That is why I always shy away from saying "you should learn language X" because in the end it is all simply the same concepts written with different syntax around it (of course there are exceptions like purely functional languages and logic-based languages + Show Spoiler +thisLanguageIsAnnoyingToWorkWith('Prolog'). true. But for the basics, a for loop is a for loop is a for loop, no matter the language). A company would rather have someone who has a rock solid understanding of concepts, can solve problems in a timely fashion, and actually knows how to create readable and logically laid out code than someone who can do some oddball, edgecase thing with Java that will only pop up once in a blue moon. There's a reason universities force you to take classes on programming practices, and it isn't to bore you (I know at my uni, we have a class where we are taught proper practices for version control, documentation, and code cleanliness. Assignments were more heavily marked on the layout of our code and how well it was documented than if it actually worked or not). Sadly, many people forget all of that as soon as the class is done, so remembering it will be a definite advantage. If you know how object oriented works and have used any single language built around the concepts of OO, you can probably teach yourself another one in a day. I learned Java outside of the swing stuff (still hate swing) in far less time than that. I just view basic Java as C++ with stupid syntax and a bunch of built in crap with even more stupid names. Turing Machines! edit: and for the comment OP made about the influx of people due to STEM/CS promotion. Don't worry, they'll just get weeded out with everyone else in the tough classes. There might be a couple more people by the end but that's it. When I started it at my university it was the largest first year of CS students they had ever had. By the start of second term of second year the number had shrunk back to normal. The same thing happened the next year too. People see the PR/promotion and get dollar signs in their eyes, but once they actually get past the first year they realize that it isn't as easy as they anticipated, especially once they hit theoretical computer science. Math symbols up the wazoo. I love theoretical computer science. We're doing automata right now and it is fascinating. Oh I'm not concerning myself with the weird shortcuts there are in every language, but rather the basic layout (OO, procedural, how pointers and garbage collection are handled, fundamental syntax differences (beyond superficiality), etc.). I'm taking a CS class (considered the equivalent of a two year uni course) right now based around Java and I think I get what you mean about weeding out. Most of my friends and I all are getting super high grades, but about half the class gets pretty poor ones in the D-C range. We lost about half the class between semesters, and we haven't even done the more mathy stuff yet (we are just starting searches and sorting, big O). I hope you're right about most people getting weeded out because I feel like most of these "I wanna make vidya gaemz lol" people aren't the kind of people I would like to work with. BTW my friend is setting me up with an internship for a company that (I think) makes web pages. I'm excited even though the pay is only like 40% more than minimum wage. Your employer is not going to go through all of your projects to read what they are. That's what your resume is for. A file describing your project is the purpose of a README file, which is used to help document things so people can take a look at a glance at what your project is. Good employers look for 2 things in their candidates - 1, that they have very relevant experience with the specific technology they work on, i.e. past Android experience when the employer is recruiting for an Android position, and 2, that the candidate can pick up the specific technology the employer is working on very quickly, i.e. having strong Java/C++/C#/OOP experience alongside strong CS foundations and able to pick up technologies quickly when applying to an Android position. I was able to hop on to an iOS7 project and was up to speed after 1.5 days. No previous iOS or Mac OS experience. It's not always about whether you know the specific technology, but whether you can pick it up quickly as well, and to do that you need strong CS fundamentals. If you know 15 languages and you're not good in any one of them, I wouldn't hire you, or even interview you. It takes no time for good programmers to pick up a fundamentally similar language, which is why people tell you to choose a OOP language (C#, Java, C++ somewhat) and a functional language (Scheme, Haskell, Lisp), and master those, instead of jumping all over the place. If you want to jump all over the place, make sure that's because you want to leverage the specific technologies that language offers over another, such as .Net or Python's huge package library. Finally, stop being such an asshole and acting superior to people. You've had two posts now where you put down others and act like you're better than them. Be a bit more humble and a lot less dicky.
How is he being an asshole?
|
On January 18 2014 14:38 sluggaslamoo wrote: How is he being an asshole?
Chocolate wrote: I'm taking a CS class (considered the equivalent of a two year uni course) right now based around Java and I think I get what you mean about weeding out. Most of my friends and I all are getting super high grades, but about half the class gets pretty poor ones in the D-C range. We lost about half the class between semesters, and we haven't even done the more mathy stuff yet (we are just starting searches and sorting, big O). I hope you're right about most people getting weeded out because I feel like most of these "I wanna make vidya gaemz lol" people aren't the kind of people I would like to work with.
Chocolate wrote: First is this a decent selection of languages if I want to keep my options open for web or more general software? Is it feasible to finish this all in four years working sparingly at a pace of around 5 hr per week? Also, is it generally acceptable to include things you made for a class in a portfolio? Thanks in advance. I have a feeling that all these stupid code/STEM PR and awareness programs are going to push a lot of scrubs into CS so I want to be one of the better candidates for internships and jobs.
|
Yeah sorry about those. Actually though I don't think it's dicky to call those awareness programs stupid, if you look at who's behind them you'll see a lot of corporations that would benefit massively from having a surfeit of programmers for the available jobs. It's the same with the more general STEM programs; a lot of them are funded by petroleum companies.
So how do I make it apparent that I will be a fast learner in a job interview? Also, how could you tell if I was no good at anything if you didn't even look at what I wrote (if you were looking at hiring)? I'm not trying to be a dick here, I promise. It's just that you told me what not to do but didn't really elaborate on what to do.
|
I meant more of the scrubs part, tech. companies definitely benefit from good PR and wider use of technology, and I'm fairly against the everyone-should-know-how-to-program ideal myself.
Your resume tells you what you've done. If your resume can't describe how your career is a good fit for the position, they won't interview you.
You can show that you are a good fit in your resume by showing that you've solved technically challenging projects around the space that the company deals in, or that you have the aptitude to rapidly acquire the knowledge required to contribute to the project. In essence, have projects (hopefully outside of class) that show off what you're capable of.
In a technical interview the interviewer (usually a developer) will ask you questions such as "reverse a linked list" or "determine if this tree is a subtree of this other tree", and judge your decision making and problem solving skills as you talk through and write down the solution. The solution is usually in pseudo-code because the interviewer understands that languages aren't really that important. The interviewer will also probably ask you to expand on some points that you've put down in your resume in a more technical manner. They also judge your enthusiasm and passion a fair bit while you're coding, so you can still get an offer despite failing to find a solution.
When I say recruiters don't look at what you wrote, I meant what you wrote in your README or equivalent .txt file. Your average recruiter handles a lot of resumes, and usually doesn't like handling them, so 1. they're probably in paper and not going to be able to be linked to, and 2. they just don't have the time nor care about checking the links.
If you can't explain and show off your project in 3 lines, then the recruiter would rather look somewhere else than explore more. A sad truth, but a recruiter isn't going to search through every applicant's history to see if they fit the company - the resume + cover letter is essentially all you have to sell yourself, and thus all they look for. If they don't find a fit and they're not desperate, the company can wait for other applicants.
|
A easy one. What does [1,n] mean? I've studied database modeling before and there were something similar called a "one-to-many" relationship between entities. Translating that to a programming language would suggest an array. However, i get the sense that it means a range where 1 is the smallest value and "n" the biggest. So does it mean range or array? Or something else?
|
|
|
|
|
|