|
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 February 15 2013 13:17 aurum510 wrote:Show nested quote +On February 15 2013 12:56 Abductedonut wrote:On February 15 2013 12:18 Cyx. wrote: Hey guys, I'm currently taking a year off of university and I'm going back into second-year software engineering next year. I have a decent grasp of some of the basics of the programming I'm going to be learning next year (a university course in C++ last year and some hobby programming in Python in highschool and C++/Python in university) but I want to get a bit of a head start on some of the topics I'm going to be learning next year like pointers, sorting algorithms, basic Java programming... basically second-year CS courses.
Are there any good places on the internet to help me get the kind of head start I want? At this point I'm basically reduced to reading my roommate's textbooks (he's in the second year of the program right now) and working through his old lab exercises and stuff from the fall, which is actually pretty good practice except that I have a hard time just picking up his textbook and figuring out what I want to be looking at unless he's right there with me. Also, as someone who's planning on being a civil engineer, not a software engineer, he doesn't really understand a lot of the stuff on the level that I want to and even he and the textbook combined can't really give me everything I need.
I know it's a bit of a broad question so any help you can give is appreciated =) I'm basically looking for anything that has some explanation of the stuff I'm going to be looking at next year but most importantly some exercises and things I can be doing - it's really hard to apply a lot of the things I see without that concrete 'write a piece of code that does X' component. I hate to sound like a douche, but being a computer scientist and a software engineer isn't all about programming. Programming is a secondary concern for computer scientists. It's phase two. If you want to learn how to program, there are thousands of tutorials and programming guides online. If you're feeling like a pirate, you could even pirate some books. And they're all great for programming. In short, if you want to program, just program. Learning how to program is linear only for a short while. You're on your own from there. If you want a TRUE CS education, you're going to have to broaden your horizons as to what computer science really is. You need to learn math, physics, electrical engineering, and computer science. (Look at MIT's degrees... why do you think their only degree program is EECS?) Don't worry too much about programming. Programming is pretty easy. Focus on math. Math is at the center of being a computer scientist. Learn calculus 1,2,3, linear algebra and differential equations. Take discrete math as a learn linear algebra. Take a statistics class. (It's pointless learning algorithms if you don't know discrete math and statistics) If you get good at solving difficult math problems, you will get good at solving difficult computer science problems. As I'm writing this I realize it's getting too long. There's too much to say about learning CS. Just check out MIT's opencourseware. It's good. http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/ You definitely do sound like a douche. While programming isn't all of what a CS/SE student should focus on, it's not worth any effort to learn any of the things you mention. I don't think I've met a software engineer who has used any calculus, linear algebra, or differential equations in their life. I don't really call discrete math mathematics either, as opposed to simple mind numbing logic. Algorithms is also important to software engineers, but honestly, once you recognize when to use what algorithms, it's pretty straightforward. And unless you're doing embedded systems, you don't need physics or electrical engineering in any way. Find me a software engineer who makes a living doing something other than programming... And basically all software architects were software engineers at some point... programming. It's pretty friggen hard to find a job with a CS degree that doesn't involve programming. Maybe some sort of theoretical research at a university, but that's about it (excluding the aforementioned architects and possibly some network jobs). All CS jobs involve programming, but those interesting ones involve also a lot of math/physics/.... . Just because most jobs are about programming trivial stuff, does not mean all of them are. I know plenty of people whose "programming jobs" would be impossible without high level math.
Also I want to know what kind of discrete math you were learning that you do not consider it math.
|
I think Abductedonut's comment was spot on, but it confuses software engineering with computer science. While the two are close, they don't require quite the same skillset/knowledge. Ideally you want to be very good at programming (coding) and theoretical stuff, which few people actually are. I work in the field of academic computer science and people are generally pretty bad at programming there :D And friends who work in a more corporate environment tell me that some of their co-workers are pretty oblivious to key elements of fundamental computer science background.
|
On February 15 2013 17:11 junseung wrote: some exciting jobs Define exciting jobs?
|
Does anyone have any experience with Oracle at all? Curious how different it is to SAS or SQL, and what plus sides it might have to it from people that deal with the 11g database on a daily basis. Also as far as i can figure out, you can use PL\SQL to query the database, but does it have any other languages that can be used with it?
Generic Question: Seems to be a lot less people learning 'data' languages, or working with databases these days from what i've read. Why do people think that is?
|
On February 16 2013 00:11 Rixxe wrote: Seems to be a lot less people learning 'data' languages, or working with databases these days from what i've read. Why do people think that is? I'm not sure that's true. If it is true, it's probably because of the spread of abstraction layers like ORMs that make it so that you can interact with a database without writing SQL yourself, but you can't really write a serious application without dipping down past the abstraction layer. It's similar to how you can't program certain types of applications in C without occasionally dipping down and hand-writing assembly code. In both cases, you can technically get the result you need, but your ability to optimize will be severely limited.
Edit to add: The reason I don't think that fewer people are working with database languages is that a database is the core of most web programming, and web development is growing very rapidly as an industry. I'd expect that nearly everyone who works with any level of proficiency as a web developer is at least familiar with the fundamentals of SQL.
|
On February 16 2013 00:11 Rixxe wrote: Generic Question: Seems to be a lot less people learning 'data' languages, or working with databases these days from what i've read. Why do people think that is?
Databases are more important than ever, especially with the predominance of web services and applications. However, traditional relational DBs are not the "in" technology anymore (i.e., the NoSQL movement), so there's decidedly less open discussion about them. Such DBs don't rely on a DSL like SQL to do work in. Furthermore, data access has been integrated into general-purpose languages at various levels, e.g., LINQ, removing the need (somewhat) for a middle-man data language.
|
On February 16 2013 00:11 Rixxe wrote: Does anyone have any experience with Oracle at all? Curious how different it is to SAS or SQL, and what plus sides it might have to it from people that deal with the 11g database on a daily basis. Also as far as i can figure out, you can use PL\SQL to query the database, but does it have any other languages that can be used with it?
Generic Question: Seems to be a lot less people learning 'data' languages, or working with databases these days from what i've read. Why do people think that is? You can't compare Oracle to SQL... Oracle is a database (a database management system, to be precise), while SQL is a query language. You use SQL to talk to Oracle. And PL/SQL is an extension of SQL that adds if's, while's, variables and stuff like that. It is used to write procedures that operate on data and are stored somewhere in the database.
If you've had experience with PostgreSQL, MySQL, MS SQL, IBM DB2 or something like that then, well, basically it's the same shit.
|
On February 15 2013 13:17 aurum510 wrote:Show nested quote +On February 15 2013 12:56 Abductedonut wrote:On February 15 2013 12:18 Cyx. wrote: Hey guys, I'm currently taking a year off of university and I'm going back into second-year software engineering next year. I have a decent grasp of some of the basics of the programming I'm going to be learning next year (a university course in C++ last year and some hobby programming in Python in highschool and C++/Python in university) but I want to get a bit of a head start on some of the topics I'm going to be learning next year like pointers, sorting algorithms, basic Java programming... basically second-year CS courses.
Are there any good places on the internet to help me get the kind of head start I want? At this point I'm basically reduced to reading my roommate's textbooks (he's in the second year of the program right now) and working through his old lab exercises and stuff from the fall, which is actually pretty good practice except that I have a hard time just picking up his textbook and figuring out what I want to be looking at unless he's right there with me. Also, as someone who's planning on being a civil engineer, not a software engineer, he doesn't really understand a lot of the stuff on the level that I want to and even he and the textbook combined can't really give me everything I need.
I know it's a bit of a broad question so any help you can give is appreciated =) I'm basically looking for anything that has some explanation of the stuff I'm going to be looking at next year but most importantly some exercises and things I can be doing - it's really hard to apply a lot of the things I see without that concrete 'write a piece of code that does X' component. I hate to sound like a douche, but being a computer scientist and a software engineer isn't all about programming. Programming is a secondary concern for computer scientists. It's phase two. If you want to learn how to program, there are thousands of tutorials and programming guides online. If you're feeling like a pirate, you could even pirate some books. And they're all great for programming. In short, if you want to program, just program. Learning how to program is linear only for a short while. You're on your own from there. If you want a TRUE CS education, you're going to have to broaden your horizons as to what computer science really is. You need to learn math, physics, electrical engineering, and computer science. (Look at MIT's degrees... why do you think their only degree program is EECS?) Don't worry too much about programming. Programming is pretty easy. Focus on math. Math is at the center of being a computer scientist. Learn calculus 1,2,3, linear algebra and differential equations. Take discrete math as a learn linear algebra. Take a statistics class. (It's pointless learning algorithms if you don't know discrete math and statistics) If you get good at solving difficult math problems, you will get good at solving difficult computer science problems. As I'm writing this I realize it's getting too long. There's too much to say about learning CS. Just check out MIT's opencourseware. It's good. http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/ You definitely do sound like a douche. While programming isn't all of what a CS/SE student should focus on, it's not worth any effort to learn any of the things you mention. I don't think I've met a software engineer who has used any calculus, linear algebra, or differential equations in their life. I don't really call discrete math mathematics either, as opposed to simple mind numbing logic. Algorithms is also important to software engineers, but honestly, once you recognize when to use what algorithms, it's pretty straightforward. And unless you're doing embedded systems, you don't need physics or electrical engineering in any way. Find me a software engineer who makes a living doing something other than programming... And basically all software architects were software engineers at some point... programming. It's pretty friggen hard to find a job with a CS degree that doesn't involve programming. Maybe some sort of theoretical research at a university, but that's about it (excluding the aforementioned architects and possibly some network jobs).
he may have come off like a douche, but you come off pretty naive.
He didn't say that programming is not important, and your indication that "it isn't worth learning any of the things you mention" is completely wrong. The most sought-after applicants in EECS fields right out of university are generally those who have the strongest fundamental skills. This is particularly true for the better jobs. If you want to have any sort of impact beyond a simple coding job then everything outside of programming is very very important.
At most good schools you will learn programming no matter what if you do EECS. In general I would say that you would learn Python, and at least two of Java/C/C++ just by taking classes. I know I did-I have a strong grasp of Scheme, Python, Java, and C just by taking the core classes. You'd probably also have the opportunity/be required to learn HTML, Javascript, mobile app development, scripting, etc.
Once you take the core classes you don't need to learn how to program. You can pretty much pick up a language and learn it within a month or less. Language to language it's mostly syntax and minor other differences; learning to code in a different language after you've already learned the basics of good programming practices is simply about opening a reference text and hammering out the details. The core logic will all be there already.
As for what the guy was asking about in the first place, for second year EECS courses, usually only one or two of them are heavily coding-based.
For example discrete mathematics, circuit theory and digital signals theory are all 1st/2nd year courses and none of them have any programming at all. They're also core.
For third year courses such as algorithms, AI, and computer security, the programming is secondary or even tertiary to what you are actually learning. I'm taking an AI course right now and it's done in Python. From a programming perspective I'm not using anything that I didn't learn in my first two CS classes; all you truly need from a programming perspective is a background in object oriented programming and data structures. Everything else is all search algorithms, trees, optimization, probability, etc.
e: I may be considerably biased though, seeing as I am lucky to be a part of one of the best EECS programs in the country (or even the world) here at Berkeley.
|
On February 15 2013 14:16 Kambing wrote:Show nested quote +On February 15 2013 13:17 aurum510 wrote: I don't really call discrete math mathematics either, as opposed to simple mind numbing logic.
Discrete math and logic is mathematics. It's actually the "other" branch of mathematics that you don't explore until college (which is arguably backwards because logic benefits the everyday student much more than calculus). And in many ways, discrete math is the foundations on which all other math is built on. Consequently it plays a big role in computer science and its importance cannot be understated. Show nested quote +On February 15 2013 13:17 aurum510 wrote: It's pretty friggen hard to find a job with a CS degree that doesn't involve programming. Maybe some sort of theoretical research at a university, but that's about it (excluding the aforementioned architects and possibly some network jobs). Such jobs exist, e.g., technology-focused entrepreneurship, technology-focused law practice (esp. around software patents), software development product managers, UX designers, tech writers, or education.
Ok I agree with you, discrete math is math of course, but what I'm saying is that I could have definitely skipped it in college and not missed a single thing. The theory of computation was much more important in my mind, but still not very useful for the average computer science graduate.
|
On February 16 2013 00:56 aurum510 wrote:Show nested quote +On February 15 2013 14:16 Kambing wrote:On February 15 2013 13:17 aurum510 wrote: I don't really call discrete math mathematics either, as opposed to simple mind numbing logic.
Discrete math and logic is mathematics. It's actually the "other" branch of mathematics that you don't explore until college (which is arguably backwards because logic benefits the everyday student much more than calculus). And in many ways, discrete math is the foundations on which all other math is built on. Consequently it plays a big role in computer science and its importance cannot be understated. On February 15 2013 13:17 aurum510 wrote: It's pretty friggen hard to find a job with a CS degree that doesn't involve programming. Maybe some sort of theoretical research at a university, but that's about it (excluding the aforementioned architects and possibly some network jobs). Such jobs exist, e.g., technology-focused entrepreneurship, technology-focused law practice (esp. around software patents), software development product managers, UX designers, tech writers, or education. Ok I agree with you, discrete math is math of course, but what I'm saying is that I could have definitely skipped it in college and not missed a single thing. The theory of computation was much more important in my mind, but still not very useful for the average computer science graduate.
so you're saying you never use boolean operators or logic gates?
|
On February 16 2013 01:00 wherebugsgo wrote:Show nested quote +On February 16 2013 00:56 aurum510 wrote:On February 15 2013 14:16 Kambing wrote:On February 15 2013 13:17 aurum510 wrote: I don't really call discrete math mathematics either, as opposed to simple mind numbing logic.
Discrete math and logic is mathematics. It's actually the "other" branch of mathematics that you don't explore until college (which is arguably backwards because logic benefits the everyday student much more than calculus). And in many ways, discrete math is the foundations on which all other math is built on. Consequently it plays a big role in computer science and its importance cannot be understated. On February 15 2013 13:17 aurum510 wrote: It's pretty friggen hard to find a job with a CS degree that doesn't involve programming. Maybe some sort of theoretical research at a university, but that's about it (excluding the aforementioned architects and possibly some network jobs). Such jobs exist, e.g., technology-focused entrepreneurship, technology-focused law practice (esp. around software patents), software development product managers, UX designers, tech writers, or education. Ok I agree with you, discrete math is math of course, but what I'm saying is that I could have definitely skipped it in college and not missed a single thing. The theory of computation was much more important in my mind, but still not very useful for the average computer science graduate. so you're saying you never use boolean operators or logic gates? Come on, you don't need to be proficient with Stirling numbers to use boolean operators...
|
On February 16 2013 00:50 wherebugsgo wrote:Show nested quote +On February 15 2013 13:17 aurum510 wrote:On February 15 2013 12:56 Abductedonut wrote:On February 15 2013 12:18 Cyx. wrote: Hey guys, I'm currently taking a year off of university and I'm going back into second-year software engineering next year. I have a decent grasp of some of the basics of the programming I'm going to be learning next year (a university course in C++ last year and some hobby programming in Python in highschool and C++/Python in university) but I want to get a bit of a head start on some of the topics I'm going to be learning next year like pointers, sorting algorithms, basic Java programming... basically second-year CS courses.
Are there any good places on the internet to help me get the kind of head start I want? At this point I'm basically reduced to reading my roommate's textbooks (he's in the second year of the program right now) and working through his old lab exercises and stuff from the fall, which is actually pretty good practice except that I have a hard time just picking up his textbook and figuring out what I want to be looking at unless he's right there with me. Also, as someone who's planning on being a civil engineer, not a software engineer, he doesn't really understand a lot of the stuff on the level that I want to and even he and the textbook combined can't really give me everything I need.
I know it's a bit of a broad question so any help you can give is appreciated =) I'm basically looking for anything that has some explanation of the stuff I'm going to be looking at next year but most importantly some exercises and things I can be doing - it's really hard to apply a lot of the things I see without that concrete 'write a piece of code that does X' component. I hate to sound like a douche, but being a computer scientist and a software engineer isn't all about programming. Programming is a secondary concern for computer scientists. It's phase two. If you want to learn how to program, there are thousands of tutorials and programming guides online. If you're feeling like a pirate, you could even pirate some books. And they're all great for programming. In short, if you want to program, just program. Learning how to program is linear only for a short while. You're on your own from there. If you want a TRUE CS education, you're going to have to broaden your horizons as to what computer science really is. You need to learn math, physics, electrical engineering, and computer science. (Look at MIT's degrees... why do you think their only degree program is EECS?) Don't worry too much about programming. Programming is pretty easy. Focus on math. Math is at the center of being a computer scientist. Learn calculus 1,2,3, linear algebra and differential equations. Take discrete math as a learn linear algebra. Take a statistics class. (It's pointless learning algorithms if you don't know discrete math and statistics) If you get good at solving difficult math problems, you will get good at solving difficult computer science problems. As I'm writing this I realize it's getting too long. There's too much to say about learning CS. Just check out MIT's opencourseware. It's good. http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/ You definitely do sound like a douche. While programming isn't all of what a CS/SE student should focus on, it's not worth any effort to learn any of the things you mention. I don't think I've met a software engineer who has used any calculus, linear algebra, or differential equations in their life. I don't really call discrete math mathematics either, as opposed to simple mind numbing logic. Algorithms is also important to software engineers, but honestly, once you recognize when to use what algorithms, it's pretty straightforward. And unless you're doing embedded systems, you don't need physics or electrical engineering in any way. Find me a software engineer who makes a living doing something other than programming... And basically all software architects were software engineers at some point... programming. It's pretty friggen hard to find a job with a CS degree that doesn't involve programming. Maybe some sort of theoretical research at a university, but that's about it (excluding the aforementioned architects and possibly some network jobs). he may have come off like a douche, but you come off pretty naive. He didn't say that programming is not important, and your indication that "it isn't worth learning any of the things you mention" is completely wrong. The most sought-after applicants in EECS fields right out of university are generally those who have the strongest fundamental skills. This is particularly true for the better jobs. If you want to have any sort of impact beyond a simple coding job then everything outside of programming is very very important. At most good schools you will learn programming no matter what if you do EECS. In general I would say that you would learn Python, and at least two of Java/C/C++ just by taking classes. I know I did-I have a strong grasp of Scheme, Python, Java, and C just by taking the core classes. You'd probably also have the opportunity/be required to learn HTML, Javascript, mobile app development, scripting, etc. Once you take the core classes you don't need to learn how to program. You can pretty much pick up a language and learn it within a month or less. Language to language it's mostly syntax and minor other differences; learning to code in a different language after you've already learned the basics of good programming practices is simply about opening a reference text and hammering out the details. The core logic will all be there already. As for what the guy was asking about in the first place, for second year EECS courses, usually only one or two of them are heavily coding-based. For example discrete mathematics, circuit theory and digital signals theory are all 1st/2nd year courses and none of them have any programming at all. They're also core. For third year courses such as algorithms, AI, and computer security, the programming is secondary or even tertiary to what you are actually learning. I'm taking an AI course right now and it's done in Python. From a programming perspective I'm not using anything that I didn't learn in my first two CS classes; all you truly need from a programming perspective is a background in object oriented programming and data structures. Everything else is all search algorithms, trees, optimization, probability, etc. e: I may be considerably biased though, seeing as I am lucky to be a part of one of the best EECS programs in the country (or even the world) here at Berkeley.
Oh please. I work as an embedded SE, and I can honestly say even I don't use any physics I learned in college. I don't use algorithms hardly at all (maybe a table of some sort now and then). I don't use discrete math. I don't use any sort of advanced mathematics beyond algebra. I don't use AI in any way (nor do much of anyone in the field). Security is about learning the algorithms and nothing else, which you can learn at any time in a few hours by opening a book.
You're still in your undergrad, so you are very biased. While it is important to understand those theory classes, they are useless in the end. The guy was asking about what he should study in his off year. I would never recommend opening a theory book and studying it, as it's not useful outside of understanding. There is almost no implementation of it unless you're writing a compiler or doing theoretical research. I got my masters at University of Chicago (also very good), and I can honestly say the only useful thing I learned in my masters was about parallel programming, some advanced operating systems and computer architecture, and that's about it.
P.S. It doesn't matter if you go to Berkley or a barely known state school, you learn the same thing. Schools are ranked by their research, not their academics now. Schools in Europe are always really low on the rankings, but that's only because the professors are there to teach, not to do research all the time (in fact, most of the schools prohibit professors from doing research while teaching, so they actually focus on teaching). I've had so many professors who have to teach one class a semester to stay employed to do their research and just give 1-3 exams and that's it. You leave those classes and know you've learned nothing. In fact, I'd much rather go to UC Davis than Berkley, as I would actually learn more. I got my undergrad at UW-Milwaukee (100th ranked in US, not very good), but I learned a lot more from the teachers there than I did at University of Chicago.
|
On February 16 2013 01:06 aurum510 wrote:Show nested quote +On February 16 2013 00:50 wherebugsgo wrote:On February 15 2013 13:17 aurum510 wrote:On February 15 2013 12:56 Abductedonut wrote:On February 15 2013 12:18 Cyx. wrote: Hey guys, I'm currently taking a year off of university and I'm going back into second-year software engineering next year. I have a decent grasp of some of the basics of the programming I'm going to be learning next year (a university course in C++ last year and some hobby programming in Python in highschool and C++/Python in university) but I want to get a bit of a head start on some of the topics I'm going to be learning next year like pointers, sorting algorithms, basic Java programming... basically second-year CS courses.
Are there any good places on the internet to help me get the kind of head start I want? At this point I'm basically reduced to reading my roommate's textbooks (he's in the second year of the program right now) and working through his old lab exercises and stuff from the fall, which is actually pretty good practice except that I have a hard time just picking up his textbook and figuring out what I want to be looking at unless he's right there with me. Also, as someone who's planning on being a civil engineer, not a software engineer, he doesn't really understand a lot of the stuff on the level that I want to and even he and the textbook combined can't really give me everything I need.
I know it's a bit of a broad question so any help you can give is appreciated =) I'm basically looking for anything that has some explanation of the stuff I'm going to be looking at next year but most importantly some exercises and things I can be doing - it's really hard to apply a lot of the things I see without that concrete 'write a piece of code that does X' component. I hate to sound like a douche, but being a computer scientist and a software engineer isn't all about programming. Programming is a secondary concern for computer scientists. It's phase two. If you want to learn how to program, there are thousands of tutorials and programming guides online. If you're feeling like a pirate, you could even pirate some books. And they're all great for programming. In short, if you want to program, just program. Learning how to program is linear only for a short while. You're on your own from there. If you want a TRUE CS education, you're going to have to broaden your horizons as to what computer science really is. You need to learn math, physics, electrical engineering, and computer science. (Look at MIT's degrees... why do you think their only degree program is EECS?) Don't worry too much about programming. Programming is pretty easy. Focus on math. Math is at the center of being a computer scientist. Learn calculus 1,2,3, linear algebra and differential equations. Take discrete math as a learn linear algebra. Take a statistics class. (It's pointless learning algorithms if you don't know discrete math and statistics) If you get good at solving difficult math problems, you will get good at solving difficult computer science problems. As I'm writing this I realize it's getting too long. There's too much to say about learning CS. Just check out MIT's opencourseware. It's good. http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/ You definitely do sound like a douche. While programming isn't all of what a CS/SE student should focus on, it's not worth any effort to learn any of the things you mention. I don't think I've met a software engineer who has used any calculus, linear algebra, or differential equations in their life. I don't really call discrete math mathematics either, as opposed to simple mind numbing logic. Algorithms is also important to software engineers, but honestly, once you recognize when to use what algorithms, it's pretty straightforward. And unless you're doing embedded systems, you don't need physics or electrical engineering in any way. Find me a software engineer who makes a living doing something other than programming... And basically all software architects were software engineers at some point... programming. It's pretty friggen hard to find a job with a CS degree that doesn't involve programming. Maybe some sort of theoretical research at a university, but that's about it (excluding the aforementioned architects and possibly some network jobs). he may have come off like a douche, but you come off pretty naive. He didn't say that programming is not important, and your indication that "it isn't worth learning any of the things you mention" is completely wrong. The most sought-after applicants in EECS fields right out of university are generally those who have the strongest fundamental skills. This is particularly true for the better jobs. If you want to have any sort of impact beyond a simple coding job then everything outside of programming is very very important. At most good schools you will learn programming no matter what if you do EECS. In general I would say that you would learn Python, and at least two of Java/C/C++ just by taking classes. I know I did-I have a strong grasp of Scheme, Python, Java, and C just by taking the core classes. You'd probably also have the opportunity/be required to learn HTML, Javascript, mobile app development, scripting, etc. Once you take the core classes you don't need to learn how to program. You can pretty much pick up a language and learn it within a month or less. Language to language it's mostly syntax and minor other differences; learning to code in a different language after you've already learned the basics of good programming practices is simply about opening a reference text and hammering out the details. The core logic will all be there already. As for what the guy was asking about in the first place, for second year EECS courses, usually only one or two of them are heavily coding-based. For example discrete mathematics, circuit theory and digital signals theory are all 1st/2nd year courses and none of them have any programming at all. They're also core. For third year courses such as algorithms, AI, and computer security, the programming is secondary or even tertiary to what you are actually learning. I'm taking an AI course right now and it's done in Python. From a programming perspective I'm not using anything that I didn't learn in my first two CS classes; all you truly need from a programming perspective is a background in object oriented programming and data structures. Everything else is all search algorithms, trees, optimization, probability, etc. e: I may be considerably biased though, seeing as I am lucky to be a part of one of the best EECS programs in the country (or even the world) here at Berkeley. Oh please. I work as an embedded SE, and I can honestly say even I don't use any physics I learned in college. I don't use algorithms hardly at all (maybe a table of some sort now and then). I don't use discrete math. I don't use any sort of advanced mathematics beyond algebra. I don't use AI in any way (nor do much of anyone in the field). Security is about learning the algorithms and nothing else, which you can learn at any time in a few hours by opening a book. You're still in your undergrad, so you are very biased. While it is important to understand those theory classes, they are useless in the end. The guy was asking about what he should study in his off year. I would never recommend opening a theory book and studying it, as it's not useful outside of understanding. There is almost no implementation of it unless you're writing a compiler or doing theoretical research. I got my masters at University of Chicago (also very good), and I can honestly say the only useful thing I learned in my masters was about parallel programming, some advanced operating systems and computer architecture, and that's about it.
I basically had the same problem While at school, I was told to study hard discrete math, algorithms, data structures .. even algorithmics for NP problems, advanced computability theory etc. I truly believed that I could learn how to program in short period, but knowledge that I was getting would last and benefit me (I would land better/more qualified jobs - yeah). I may call it The blindness of theoretical CS.
What I know now is complete opposite - you can learn math and algos quickly (any research paper is comprehensible after all, if you stare long enough), but learning programming might take you 5 years AT LEAST. Fundamental problem is this - knowing programming language /= being good programmer. So yes, you can learn new 10 languages per year (or even more quickly), yet you may suck at programming so hard ... That`s basically my problem - I can do fancy stuff with math, I know syntax of programming languages, I know how to use it, yet creating efficient, bug-free, ellegant and maintainable code is an art, which I don`t master yet.
Btw. if you see spirited and talented CS grad that believes discrete math will make him substantially better - just don`t crush his dreams, because he is doing what he believes in, and that`s what matters. He will eventually find out
|
On February 16 2013 01:32 YiSunsin wrote:Show nested quote +On February 16 2013 01:06 aurum510 wrote:On February 16 2013 00:50 wherebugsgo wrote:On February 15 2013 13:17 aurum510 wrote:On February 15 2013 12:56 Abductedonut wrote:On February 15 2013 12:18 Cyx. wrote: Hey guys, I'm currently taking a year off of university and I'm going back into second-year software engineering next year. I have a decent grasp of some of the basics of the programming I'm going to be learning next year (a university course in C++ last year and some hobby programming in Python in highschool and C++/Python in university) but I want to get a bit of a head start on some of the topics I'm going to be learning next year like pointers, sorting algorithms, basic Java programming... basically second-year CS courses.
Are there any good places on the internet to help me get the kind of head start I want? At this point I'm basically reduced to reading my roommate's textbooks (he's in the second year of the program right now) and working through his old lab exercises and stuff from the fall, which is actually pretty good practice except that I have a hard time just picking up his textbook and figuring out what I want to be looking at unless he's right there with me. Also, as someone who's planning on being a civil engineer, not a software engineer, he doesn't really understand a lot of the stuff on the level that I want to and even he and the textbook combined can't really give me everything I need.
I know it's a bit of a broad question so any help you can give is appreciated =) I'm basically looking for anything that has some explanation of the stuff I'm going to be looking at next year but most importantly some exercises and things I can be doing - it's really hard to apply a lot of the things I see without that concrete 'write a piece of code that does X' component. I hate to sound like a douche, but being a computer scientist and a software engineer isn't all about programming. Programming is a secondary concern for computer scientists. It's phase two. If you want to learn how to program, there are thousands of tutorials and programming guides online. If you're feeling like a pirate, you could even pirate some books. And they're all great for programming. In short, if you want to program, just program. Learning how to program is linear only for a short while. You're on your own from there. If you want a TRUE CS education, you're going to have to broaden your horizons as to what computer science really is. You need to learn math, physics, electrical engineering, and computer science. (Look at MIT's degrees... why do you think their only degree program is EECS?) Don't worry too much about programming. Programming is pretty easy. Focus on math. Math is at the center of being a computer scientist. Learn calculus 1,2,3, linear algebra and differential equations. Take discrete math as a learn linear algebra. Take a statistics class. (It's pointless learning algorithms if you don't know discrete math and statistics) If you get good at solving difficult math problems, you will get good at solving difficult computer science problems. As I'm writing this I realize it's getting too long. There's too much to say about learning CS. Just check out MIT's opencourseware. It's good. http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/ You definitely do sound like a douche. While programming isn't all of what a CS/SE student should focus on, it's not worth any effort to learn any of the things you mention. I don't think I've met a software engineer who has used any calculus, linear algebra, or differential equations in their life. I don't really call discrete math mathematics either, as opposed to simple mind numbing logic. Algorithms is also important to software engineers, but honestly, once you recognize when to use what algorithms, it's pretty straightforward. And unless you're doing embedded systems, you don't need physics or electrical engineering in any way. Find me a software engineer who makes a living doing something other than programming... And basically all software architects were software engineers at some point... programming. It's pretty friggen hard to find a job with a CS degree that doesn't involve programming. Maybe some sort of theoretical research at a university, but that's about it (excluding the aforementioned architects and possibly some network jobs). he may have come off like a douche, but you come off pretty naive. He didn't say that programming is not important, and your indication that "it isn't worth learning any of the things you mention" is completely wrong. The most sought-after applicants in EECS fields right out of university are generally those who have the strongest fundamental skills. This is particularly true for the better jobs. If you want to have any sort of impact beyond a simple coding job then everything outside of programming is very very important. At most good schools you will learn programming no matter what if you do EECS. In general I would say that you would learn Python, and at least two of Java/C/C++ just by taking classes. I know I did-I have a strong grasp of Scheme, Python, Java, and C just by taking the core classes. You'd probably also have the opportunity/be required to learn HTML, Javascript, mobile app development, scripting, etc. Once you take the core classes you don't need to learn how to program. You can pretty much pick up a language and learn it within a month or less. Language to language it's mostly syntax and minor other differences; learning to code in a different language after you've already learned the basics of good programming practices is simply about opening a reference text and hammering out the details. The core logic will all be there already. As for what the guy was asking about in the first place, for second year EECS courses, usually only one or two of them are heavily coding-based. For example discrete mathematics, circuit theory and digital signals theory are all 1st/2nd year courses and none of them have any programming at all. They're also core. For third year courses such as algorithms, AI, and computer security, the programming is secondary or even tertiary to what you are actually learning. I'm taking an AI course right now and it's done in Python. From a programming perspective I'm not using anything that I didn't learn in my first two CS classes; all you truly need from a programming perspective is a background in object oriented programming and data structures. Everything else is all search algorithms, trees, optimization, probability, etc. e: I may be considerably biased though, seeing as I am lucky to be a part of one of the best EECS programs in the country (or even the world) here at Berkeley. Oh please. I work as an embedded SE, and I can honestly say even I don't use any physics I learned in college. I don't use algorithms hardly at all (maybe a table of some sort now and then). I don't use discrete math. I don't use any sort of advanced mathematics beyond algebra. I don't use AI in any way (nor do much of anyone in the field). Security is about learning the algorithms and nothing else, which you can learn at any time in a few hours by opening a book. You're still in your undergrad, so you are very biased. While it is important to understand those theory classes, they are useless in the end. The guy was asking about what he should study in his off year. I would never recommend opening a theory book and studying it, as it's not useful outside of understanding. There is almost no implementation of it unless you're writing a compiler or doing theoretical research. I got my masters at University of Chicago (also very good), and I can honestly say the only useful thing I learned in my masters was about parallel programming, some advanced operating systems and computer architecture, and that's about it. I basically had the same problem  While at school, I was told to study hard discrete math, algorithms, data structures .. even algorithmics for NP problems, advanced computability theory etc. I truly believed that I could learn how to program in short period, but knowledge that I was getting would last and benefit me (I would land better/more qualified jobs - yeah). I may call it The blindness of theoretical CS. What I know now is complete opposite - you can learn math and algos quickly (any research paper is comprehensible after all, if you stare long enough), but learning programming might take you 5 years AT LEAST. Fundamental problem is this - knowing programming language /= being good programmer. So yes, you can learn new 10 languages per year (or even more quickly), yet you may suck at programming so hard ...  That`s basically my problem - I can do fancy stuff with math, I know syntax of programming languages, I know how to use it, yet creating efficient, bug-free, ellegant and maintainable code is an art, which I don`t master yet. Btw. if you see spirited and talented CS grad that believes discrete math will make him substantially better - just don`t crush his dreams, because he is doing what he believes in, and that`s what matters. He will eventually find out 
All of this rings true. Programming is an art one masters throughout his/her life.
|
On February 16 2013 00:50 wherebugsgo wrote: He didn't say that programming is not important, and your indication that "it isn't worth learning any of the things you mention" is completely wrong. The most sought-after applicants in EECS fields right out of university are generally those who have the strongest fundamental skills. This is particularly true for the better jobs. If you want to have any sort of impact beyond a simple coding job then everything outside of programming is very very important. That would be soooo nice if only it was true.
|
On February 16 2013 01:32 YiSunsin wrote:Show nested quote +On February 16 2013 01:06 aurum510 wrote:On February 16 2013 00:50 wherebugsgo wrote:On February 15 2013 13:17 aurum510 wrote:On February 15 2013 12:56 Abductedonut wrote:On February 15 2013 12:18 Cyx. wrote: Hey guys, I'm currently taking a year off of university and I'm going back into second-year software engineering next year. I have a decent grasp of some of the basics of the programming I'm going to be learning next year (a university course in C++ last year and some hobby programming in Python in highschool and C++/Python in university) but I want to get a bit of a head start on some of the topics I'm going to be learning next year like pointers, sorting algorithms, basic Java programming... basically second-year CS courses.
Are there any good places on the internet to help me get the kind of head start I want? At this point I'm basically reduced to reading my roommate's textbooks (he's in the second year of the program right now) and working through his old lab exercises and stuff from the fall, which is actually pretty good practice except that I have a hard time just picking up his textbook and figuring out what I want to be looking at unless he's right there with me. Also, as someone who's planning on being a civil engineer, not a software engineer, he doesn't really understand a lot of the stuff on the level that I want to and even he and the textbook combined can't really give me everything I need.
I know it's a bit of a broad question so any help you can give is appreciated =) I'm basically looking for anything that has some explanation of the stuff I'm going to be looking at next year but most importantly some exercises and things I can be doing - it's really hard to apply a lot of the things I see without that concrete 'write a piece of code that does X' component. I hate to sound like a douche, but being a computer scientist and a software engineer isn't all about programming. Programming is a secondary concern for computer scientists. It's phase two. If you want to learn how to program, there are thousands of tutorials and programming guides online. If you're feeling like a pirate, you could even pirate some books. And they're all great for programming. In short, if you want to program, just program. Learning how to program is linear only for a short while. You're on your own from there. If you want a TRUE CS education, you're going to have to broaden your horizons as to what computer science really is. You need to learn math, physics, electrical engineering, and computer science. (Look at MIT's degrees... why do you think their only degree program is EECS?) Don't worry too much about programming. Programming is pretty easy. Focus on math. Math is at the center of being a computer scientist. Learn calculus 1,2,3, linear algebra and differential equations. Take discrete math as a learn linear algebra. Take a statistics class. (It's pointless learning algorithms if you don't know discrete math and statistics) If you get good at solving difficult math problems, you will get good at solving difficult computer science problems. As I'm writing this I realize it's getting too long. There's too much to say about learning CS. Just check out MIT's opencourseware. It's good. http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/ You definitely do sound like a douche. While programming isn't all of what a CS/SE student should focus on, it's not worth any effort to learn any of the things you mention. I don't think I've met a software engineer who has used any calculus, linear algebra, or differential equations in their life. I don't really call discrete math mathematics either, as opposed to simple mind numbing logic. Algorithms is also important to software engineers, but honestly, once you recognize when to use what algorithms, it's pretty straightforward. And unless you're doing embedded systems, you don't need physics or electrical engineering in any way. Find me a software engineer who makes a living doing something other than programming... And basically all software architects were software engineers at some point... programming. It's pretty friggen hard to find a job with a CS degree that doesn't involve programming. Maybe some sort of theoretical research at a university, but that's about it (excluding the aforementioned architects and possibly some network jobs). he may have come off like a douche, but you come off pretty naive. He didn't say that programming is not important, and your indication that "it isn't worth learning any of the things you mention" is completely wrong. The most sought-after applicants in EECS fields right out of university are generally those who have the strongest fundamental skills. This is particularly true for the better jobs. If you want to have any sort of impact beyond a simple coding job then everything outside of programming is very very important. At most good schools you will learn programming no matter what if you do EECS. In general I would say that you would learn Python, and at least two of Java/C/C++ just by taking classes. I know I did-I have a strong grasp of Scheme, Python, Java, and C just by taking the core classes. You'd probably also have the opportunity/be required to learn HTML, Javascript, mobile app development, scripting, etc. Once you take the core classes you don't need to learn how to program. You can pretty much pick up a language and learn it within a month or less. Language to language it's mostly syntax and minor other differences; learning to code in a different language after you've already learned the basics of good programming practices is simply about opening a reference text and hammering out the details. The core logic will all be there already. As for what the guy was asking about in the first place, for second year EECS courses, usually only one or two of them are heavily coding-based. For example discrete mathematics, circuit theory and digital signals theory are all 1st/2nd year courses and none of them have any programming at all. They're also core. For third year courses such as algorithms, AI, and computer security, the programming is secondary or even tertiary to what you are actually learning. I'm taking an AI course right now and it's done in Python. From a programming perspective I'm not using anything that I didn't learn in my first two CS classes; all you truly need from a programming perspective is a background in object oriented programming and data structures. Everything else is all search algorithms, trees, optimization, probability, etc. e: I may be considerably biased though, seeing as I am lucky to be a part of one of the best EECS programs in the country (or even the world) here at Berkeley. Oh please. I work as an embedded SE, and I can honestly say even I don't use any physics I learned in college. I don't use algorithms hardly at all (maybe a table of some sort now and then). I don't use discrete math. I don't use any sort of advanced mathematics beyond algebra. I don't use AI in any way (nor do much of anyone in the field). Security is about learning the algorithms and nothing else, which you can learn at any time in a few hours by opening a book. You're still in your undergrad, so you are very biased. While it is important to understand those theory classes, they are useless in the end. The guy was asking about what he should study in his off year. I would never recommend opening a theory book and studying it, as it's not useful outside of understanding. There is almost no implementation of it unless you're writing a compiler or doing theoretical research. I got my masters at University of Chicago (also very good), and I can honestly say the only useful thing I learned in my masters was about parallel programming, some advanced operating systems and computer architecture, and that's about it. I basically had the same problem  While at school, I was told to study hard discrete math, algorithms, data structures .. even algorithmics for NP problems, advanced computability theory etc. I truly believed that I could learn how to program in short period, but knowledge that I was getting would last and benefit me (I would land better/more qualified jobs - yeah). I may call it The blindness of theoretical CS. What I know now is complete opposite - you can learn math and algos quickly (any research paper is comprehensible after all, if you stare long enough), but learning programming might take you 5 years AT LEAST. Fundamental problem is this - knowing programming language /= being good programmer. So yes, you can learn new 10 languages per year (or even more quickly), yet you may suck at programming so hard ...  That`s basically my problem - I can do fancy stuff with math, I know syntax of programming languages, I know how to use it, yet creating efficient, bug-free, ellegant and maintainable code is an art, which I don`t master yet. Btw. if you see spirited and talented CS grad that believes discrete math will make him substantially better - just don`t crush his dreams, because he is doing what he believes in, and that`s what matters. He will eventually find out  Or maybe, just maybe, both are true ? Most people objected to him saying that those topics are of no use for a programmer. Yes, for 90% of programmers they are of little to no use. But there are many non-academic jobs that require you to know both. You need practice to become a good programmer, but that is something school won't teach you anyway. What they can teach you is how to think about abstract issues and some topics of computer science.
Person who learned discrete math, complexity and computability and all those other "useless" topics WILL be (statistically) better than the one who did not. Both will require extensive programming practice to become good programmers, most of it out of school, but the first will also have learned how to properly think about problems. And if he is lucky he might get one of those jobs where you are not a coding monkey from the get go.
|
On February 16 2013 02:14 mcc wrote:Show nested quote +On February 16 2013 01:32 YiSunsin wrote:On February 16 2013 01:06 aurum510 wrote:On February 16 2013 00:50 wherebugsgo wrote:On February 15 2013 13:17 aurum510 wrote:On February 15 2013 12:56 Abductedonut wrote:On February 15 2013 12:18 Cyx. wrote: Hey guys, I'm currently taking a year off of university and I'm going back into second-year software engineering next year. I have a decent grasp of some of the basics of the programming I'm going to be learning next year (a university course in C++ last year and some hobby programming in Python in highschool and C++/Python in university) but I want to get a bit of a head start on some of the topics I'm going to be learning next year like pointers, sorting algorithms, basic Java programming... basically second-year CS courses.
Are there any good places on the internet to help me get the kind of head start I want? At this point I'm basically reduced to reading my roommate's textbooks (he's in the second year of the program right now) and working through his old lab exercises and stuff from the fall, which is actually pretty good practice except that I have a hard time just picking up his textbook and figuring out what I want to be looking at unless he's right there with me. Also, as someone who's planning on being a civil engineer, not a software engineer, he doesn't really understand a lot of the stuff on the level that I want to and even he and the textbook combined can't really give me everything I need.
I know it's a bit of a broad question so any help you can give is appreciated =) I'm basically looking for anything that has some explanation of the stuff I'm going to be looking at next year but most importantly some exercises and things I can be doing - it's really hard to apply a lot of the things I see without that concrete 'write a piece of code that does X' component. I hate to sound like a douche, but being a computer scientist and a software engineer isn't all about programming. Programming is a secondary concern for computer scientists. It's phase two. If you want to learn how to program, there are thousands of tutorials and programming guides online. If you're feeling like a pirate, you could even pirate some books. And they're all great for programming. In short, if you want to program, just program. Learning how to program is linear only for a short while. You're on your own from there. If you want a TRUE CS education, you're going to have to broaden your horizons as to what computer science really is. You need to learn math, physics, electrical engineering, and computer science. (Look at MIT's degrees... why do you think their only degree program is EECS?) Don't worry too much about programming. Programming is pretty easy. Focus on math. Math is at the center of being a computer scientist. Learn calculus 1,2,3, linear algebra and differential equations. Take discrete math as a learn linear algebra. Take a statistics class. (It's pointless learning algorithms if you don't know discrete math and statistics) If you get good at solving difficult math problems, you will get good at solving difficult computer science problems. As I'm writing this I realize it's getting too long. There's too much to say about learning CS. Just check out MIT's opencourseware. It's good. http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/ You definitely do sound like a douche. While programming isn't all of what a CS/SE student should focus on, it's not worth any effort to learn any of the things you mention. I don't think I've met a software engineer who has used any calculus, linear algebra, or differential equations in their life. I don't really call discrete math mathematics either, as opposed to simple mind numbing logic. Algorithms is also important to software engineers, but honestly, once you recognize when to use what algorithms, it's pretty straightforward. And unless you're doing embedded systems, you don't need physics or electrical engineering in any way. Find me a software engineer who makes a living doing something other than programming... And basically all software architects were software engineers at some point... programming. It's pretty friggen hard to find a job with a CS degree that doesn't involve programming. Maybe some sort of theoretical research at a university, but that's about it (excluding the aforementioned architects and possibly some network jobs). he may have come off like a douche, but you come off pretty naive. He didn't say that programming is not important, and your indication that "it isn't worth learning any of the things you mention" is completely wrong. The most sought-after applicants in EECS fields right out of university are generally those who have the strongest fundamental skills. This is particularly true for the better jobs. If you want to have any sort of impact beyond a simple coding job then everything outside of programming is very very important. At most good schools you will learn programming no matter what if you do EECS. In general I would say that you would learn Python, and at least two of Java/C/C++ just by taking classes. I know I did-I have a strong grasp of Scheme, Python, Java, and C just by taking the core classes. You'd probably also have the opportunity/be required to learn HTML, Javascript, mobile app development, scripting, etc. Once you take the core classes you don't need to learn how to program. You can pretty much pick up a language and learn it within a month or less. Language to language it's mostly syntax and minor other differences; learning to code in a different language after you've already learned the basics of good programming practices is simply about opening a reference text and hammering out the details. The core logic will all be there already. As for what the guy was asking about in the first place, for second year EECS courses, usually only one or two of them are heavily coding-based. For example discrete mathematics, circuit theory and digital signals theory are all 1st/2nd year courses and none of them have any programming at all. They're also core. For third year courses such as algorithms, AI, and computer security, the programming is secondary or even tertiary to what you are actually learning. I'm taking an AI course right now and it's done in Python. From a programming perspective I'm not using anything that I didn't learn in my first two CS classes; all you truly need from a programming perspective is a background in object oriented programming and data structures. Everything else is all search algorithms, trees, optimization, probability, etc. e: I may be considerably biased though, seeing as I am lucky to be a part of one of the best EECS programs in the country (or even the world) here at Berkeley. Oh please. I work as an embedded SE, and I can honestly say even I don't use any physics I learned in college. I don't use algorithms hardly at all (maybe a table of some sort now and then). I don't use discrete math. I don't use any sort of advanced mathematics beyond algebra. I don't use AI in any way (nor do much of anyone in the field). Security is about learning the algorithms and nothing else, which you can learn at any time in a few hours by opening a book. You're still in your undergrad, so you are very biased. While it is important to understand those theory classes, they are useless in the end. The guy was asking about what he should study in his off year. I would never recommend opening a theory book and studying it, as it's not useful outside of understanding. There is almost no implementation of it unless you're writing a compiler or doing theoretical research. I got my masters at University of Chicago (also very good), and I can honestly say the only useful thing I learned in my masters was about parallel programming, some advanced operating systems and computer architecture, and that's about it. I basically had the same problem  While at school, I was told to study hard discrete math, algorithms, data structures .. even algorithmics for NP problems, advanced computability theory etc. I truly believed that I could learn how to program in short period, but knowledge that I was getting would last and benefit me (I would land better/more qualified jobs - yeah). I may call it The blindness of theoretical CS. What I know now is complete opposite - you can learn math and algos quickly (any research paper is comprehensible after all, if you stare long enough), but learning programming might take you 5 years AT LEAST. Fundamental problem is this - knowing programming language /= being good programmer. So yes, you can learn new 10 languages per year (or even more quickly), yet you may suck at programming so hard ...  That`s basically my problem - I can do fancy stuff with math, I know syntax of programming languages, I know how to use it, yet creating efficient, bug-free, ellegant and maintainable code is an art, which I don`t master yet. Btw. if you see spirited and talented CS grad that believes discrete math will make him substantially better - just don`t crush his dreams, because he is doing what he believes in, and that`s what matters. He will eventually find out  Or maybe, just maybe, both are true ? Most people objected to him saying that those topics are of no use for a programmer. Yes, for 90% of programmers they are of little to no use. But there are many non-academic jobs that require you to know both. You need practice to become a good programmer, but that is something school won't teach you anyway. What they can teach you is how to think about abstract issues and some topics of computer science. Person who learned discrete math, complexity and computability and all those other "useless" topics WILL be (statistically) better than the one who did not. Both will require extensive programming practice to become good programmers, most of it out of school, but the first will also have learned how to properly think about problems. And if he is lucky he might get one of those jobs where you are not a coding monkey from the get go.
This is true as well, many jobs do require more than just "coding". But as I was responding to someone who told a person taking a year off of school to study theory and not coding, I believe my response was accurate. I don't think telling a second year university student to look at theory is a good idea. I think even anyone with some experience can tell you that. Trying to keep up on your studies while taking a year off by reading theory books is a really really bad idea.
I do believe there are many extremely important advanced courses in computer science that do involve some theory, but they also involve implementing those theoretical ideas.
|
Hey guys,
Do any of you know what the way is to change variables in between Perl script instances? I want to get rid of this changing of variables throughout multiple instances (runs of the same Perl script). Because I seem to have created the following byproduct which I'm unable to get rid of:
Perl1.pl
my $var;
sub test { for (0..1000) { print $var . "\n"; sleep 1; } }
// Some piece of script here sets $var randomly - uses DBI to fetch database value test();
So the first time I run Perl1.pl: $var is set to "Test 1"; It outputs:
Test 1 Test 1 Test 1 etc...
I run the same script again while the first is still running (this one sets $var to "Test 2") and this happens with the first script instance:
Test 1 Test 1 --- runs second script instance --- Test 2 Test 2 Test 2 etc..
PS. I don't use a package scope.
|
On February 16 2013 02:27 aurum510 wrote:Show nested quote +On February 16 2013 02:14 mcc wrote:On February 16 2013 01:32 YiSunsin wrote:On February 16 2013 01:06 aurum510 wrote:On February 16 2013 00:50 wherebugsgo wrote:On February 15 2013 13:17 aurum510 wrote:On February 15 2013 12:56 Abductedonut wrote:On February 15 2013 12:18 Cyx. wrote: Hey guys, I'm currently taking a year off of university and I'm going back into second-year software engineering next year. I have a decent grasp of some of the basics of the programming I'm going to be learning next year (a university course in C++ last year and some hobby programming in Python in highschool and C++/Python in university) but I want to get a bit of a head start on some of the topics I'm going to be learning next year like pointers, sorting algorithms, basic Java programming... basically second-year CS courses.
Are there any good places on the internet to help me get the kind of head start I want? At this point I'm basically reduced to reading my roommate's textbooks (he's in the second year of the program right now) and working through his old lab exercises and stuff from the fall, which is actually pretty good practice except that I have a hard time just picking up his textbook and figuring out what I want to be looking at unless he's right there with me. Also, as someone who's planning on being a civil engineer, not a software engineer, he doesn't really understand a lot of the stuff on the level that I want to and even he and the textbook combined can't really give me everything I need.
I know it's a bit of a broad question so any help you can give is appreciated =) I'm basically looking for anything that has some explanation of the stuff I'm going to be looking at next year but most importantly some exercises and things I can be doing - it's really hard to apply a lot of the things I see without that concrete 'write a piece of code that does X' component. I hate to sound like a douche, but being a computer scientist and a software engineer isn't all about programming. Programming is a secondary concern for computer scientists. It's phase two. If you want to learn how to program, there are thousands of tutorials and programming guides online. If you're feeling like a pirate, you could even pirate some books. And they're all great for programming. In short, if you want to program, just program. Learning how to program is linear only for a short while. You're on your own from there. If you want a TRUE CS education, you're going to have to broaden your horizons as to what computer science really is. You need to learn math, physics, electrical engineering, and computer science. (Look at MIT's degrees... why do you think their only degree program is EECS?) Don't worry too much about programming. Programming is pretty easy. Focus on math. Math is at the center of being a computer scientist. Learn calculus 1,2,3, linear algebra and differential equations. Take discrete math as a learn linear algebra. Take a statistics class. (It's pointless learning algorithms if you don't know discrete math and statistics) If you get good at solving difficult math problems, you will get good at solving difficult computer science problems. As I'm writing this I realize it's getting too long. There's too much to say about learning CS. Just check out MIT's opencourseware. It's good. http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/ You definitely do sound like a douche. While programming isn't all of what a CS/SE student should focus on, it's not worth any effort to learn any of the things you mention. I don't think I've met a software engineer who has used any calculus, linear algebra, or differential equations in their life. I don't really call discrete math mathematics either, as opposed to simple mind numbing logic. Algorithms is also important to software engineers, but honestly, once you recognize when to use what algorithms, it's pretty straightforward. And unless you're doing embedded systems, you don't need physics or electrical engineering in any way. Find me a software engineer who makes a living doing something other than programming... And basically all software architects were software engineers at some point... programming. It's pretty friggen hard to find a job with a CS degree that doesn't involve programming. Maybe some sort of theoretical research at a university, but that's about it (excluding the aforementioned architects and possibly some network jobs). he may have come off like a douche, but you come off pretty naive. He didn't say that programming is not important, and your indication that "it isn't worth learning any of the things you mention" is completely wrong. The most sought-after applicants in EECS fields right out of university are generally those who have the strongest fundamental skills. This is particularly true for the better jobs. If you want to have any sort of impact beyond a simple coding job then everything outside of programming is very very important. At most good schools you will learn programming no matter what if you do EECS. In general I would say that you would learn Python, and at least two of Java/C/C++ just by taking classes. I know I did-I have a strong grasp of Scheme, Python, Java, and C just by taking the core classes. You'd probably also have the opportunity/be required to learn HTML, Javascript, mobile app development, scripting, etc. Once you take the core classes you don't need to learn how to program. You can pretty much pick up a language and learn it within a month or less. Language to language it's mostly syntax and minor other differences; learning to code in a different language after you've already learned the basics of good programming practices is simply about opening a reference text and hammering out the details. The core logic will all be there already. As for what the guy was asking about in the first place, for second year EECS courses, usually only one or two of them are heavily coding-based. For example discrete mathematics, circuit theory and digital signals theory are all 1st/2nd year courses and none of them have any programming at all. They're also core. For third year courses such as algorithms, AI, and computer security, the programming is secondary or even tertiary to what you are actually learning. I'm taking an AI course right now and it's done in Python. From a programming perspective I'm not using anything that I didn't learn in my first two CS classes; all you truly need from a programming perspective is a background in object oriented programming and data structures. Everything else is all search algorithms, trees, optimization, probability, etc. e: I may be considerably biased though, seeing as I am lucky to be a part of one of the best EECS programs in the country (or even the world) here at Berkeley. Oh please. I work as an embedded SE, and I can honestly say even I don't use any physics I learned in college. I don't use algorithms hardly at all (maybe a table of some sort now and then). I don't use discrete math. I don't use any sort of advanced mathematics beyond algebra. I don't use AI in any way (nor do much of anyone in the field). Security is about learning the algorithms and nothing else, which you can learn at any time in a few hours by opening a book. You're still in your undergrad, so you are very biased. While it is important to understand those theory classes, they are useless in the end. The guy was asking about what he should study in his off year. I would never recommend opening a theory book and studying it, as it's not useful outside of understanding. There is almost no implementation of it unless you're writing a compiler or doing theoretical research. I got my masters at University of Chicago (also very good), and I can honestly say the only useful thing I learned in my masters was about parallel programming, some advanced operating systems and computer architecture, and that's about it. I basically had the same problem  While at school, I was told to study hard discrete math, algorithms, data structures .. even algorithmics for NP problems, advanced computability theory etc. I truly believed that I could learn how to program in short period, but knowledge that I was getting would last and benefit me (I would land better/more qualified jobs - yeah). I may call it The blindness of theoretical CS. What I know now is complete opposite - you can learn math and algos quickly (any research paper is comprehensible after all, if you stare long enough), but learning programming might take you 5 years AT LEAST. Fundamental problem is this - knowing programming language /= being good programmer. So yes, you can learn new 10 languages per year (or even more quickly), yet you may suck at programming so hard ...  That`s basically my problem - I can do fancy stuff with math, I know syntax of programming languages, I know how to use it, yet creating efficient, bug-free, ellegant and maintainable code is an art, which I don`t master yet. Btw. if you see spirited and talented CS grad that believes discrete math will make him substantially better - just don`t crush his dreams, because he is doing what he believes in, and that`s what matters. He will eventually find out  Or maybe, just maybe, both are true ? Most people objected to him saying that those topics are of no use for a programmer. Yes, for 90% of programmers they are of little to no use. But there are many non-academic jobs that require you to know both. You need practice to become a good programmer, but that is something school won't teach you anyway. What they can teach you is how to think about abstract issues and some topics of computer science. Person who learned discrete math, complexity and computability and all those other "useless" topics WILL be (statistically) better than the one who did not. Both will require extensive programming practice to become good programmers, most of it out of school, but the first will also have learned how to properly think about problems. And if he is lucky he might get one of those jobs where you are not a coding monkey from the get go. This is true as well, many jobs do require more than just "coding". But as I was responding to someone who told a person taking a year off of school to study theory and not coding, I believe my response was accurate. I don't think telling a second year university student to look at theory is a good idea. I think even anyone with some experience can tell you that. Trying to keep up on your studies while taking a year off by reading theory books is a really really bad idea. I do believe there are many extremely important advanced courses in computer science that do involve some theory, but they also involve implementing those theoretical ideas. Well I disagree with you as he will not learn how to be a good programmer by doing pet projects (he might but that would be a rare occurance). Team projects and "real-life" projects are the lessons that teach you how to be a good programmer in the sense that you talk about. It is very unlikely he will have opportunity to do so. Much better to spend the time on learning non-programming things that interest him and do programming only as far as necessary to realize those things. For example, interested in neural networks, learn about them and program some. And so on.
|
Guys I need your help. I currently have this code:
int main(void) { /* input variables */ float a, b; int n; /* division = a/b */ long double division; int answer;
/* get input */ scanf("%f %f %d", &a, &b, &n);
// calculate a/b division = (long double)a / (long double)b; answer = (int)(division * pow(10, n)) % 10;
printf("%Lf\n", division);
/* output */ printf("%d\n", answer); /* successful execution */ return 0; }
But it doesn't work properly when I write: 8 60000 5
In other words, 8/60000 returns this: -bash-4.1$ ./a.out 8 60000 5 0.000133 <--- incorrect result of 8/60000 3
The goal of the program is to find the n-th digit after the decimal point, but the real problem right now is it doesn't calculate precisely.
How do I achieve 'very high' precision? It's what my assignment's requirement says.
|
|
|
|
|
|