News for hackers. Stuff that matters.
Re:A computer science study plan by janoc on Monday December 11, 2017 @02:57PM (#15899846)
I am sorry but this is neither complete nor a plan how to become a software engineer.

This is a list of trivia to get you through a coding interview conducted by a clueless HR department that equates engineering skill with remembering answers to test questions. Nothing more.

None of the stuff in the list will actually teach you how to apply these techniques nor when to apply them (and when to stay away!) - which is much more important to know than to remember how to balance a red black tree or to sort a list.

The algorithms you can always look up - and frankly, how often does an average engineer implement something like that today instead of using a library? However, knowing when to use which technique or algorithm is absolutely essential.

What am I missing completely is foundations of mathematics. There is some on combinatorics (good) and some geometry in the optional parts, but where is numerical mathematics? Linear algebra? Basics of statistics and calculus?

With the "big data"/AI crazes going on you will be dead in the water if you don't know at least the basics. Not to design the algorithms (that will be still way over your head) but to at least have a shot at understanding what you have to implement! Nobody is going to explain you how to multiply matrices or calculate a covariance there.

Stuff like geometry and linear algebra is absolutely essential also for people programming computer games, anything related to virtual/augmented reality or robotics.

Statistics is needed anywhere dealing with data but especially in AI, machine learning and computer vision.

And basics of calculus are pretty much everywhere.

So while the list is pretty useful as a reference, the title is seriously misleading.

Re:A computer science study plan by professorTuring on Monday December 11, 2017 @04:05PM (#15900428)
Completely agree. This is "how to become a programmer with a general knowledge". Far, far away from a Computer Scientist.

I can't see any of the "basics" stuff like calculus, algebra...

BUT, it is truth that most of the enterprises are fine having a programmer rather than a Computer Scientist... Probably most of them can't even tell the difference.

Re:A computer science study plan by bri3d on Monday December 11, 2017 @04:32PM (#15900666)
Most enterprises would much _rather_ a programmer than a Computer Scientist. They, by and large, want and need implementation of either existing architectures (Programmers) or existing concepts applied to a take on an explored problem domain (Software Engineers). Research into net-new patterns (Computer Science) is often the domain of large corporate R+D departments and a few niche startups, not the bulk of industry.
Re:A computer science study plan by rhizome on Monday December 11, 2017 @04:49PM (#15900809)
I'd go so far as to say that almost zero jobs need Computer Scientists.
Re:A computer science study plan by keithnz on Monday December 11, 2017 @04:12PM (#15900486)
to be fair, it says software engineer not computer scientist. But I don't really think it's a good basis for that. It really does look like a "cheat sheet for interviews"
Re:A computer science study plan by eesmith on Monday December 11, 2017 @04:33PM (#15900670)
One of the things I look for, in recommendations like this, is a mention of ethics. As an engineer we are obligated to understand the ethical consequences of our work, both in failure and success, and not do unethical work. This list of algorithm-heavy topics left out ethics, as well as other topics.

Here are the curricula recommendations that the ACM has for a software engineer, extracted and reformatted from https://www.acm.org/binaries/content/assets/education/curric... . The min/max expresses a weighting scheme for each of the knowledge areas

  min max  Knowledge Area 
   5   5   Programming Fundamentals 
   1   3   Integrative Programming 
   3   4   Algorithms and Complexity 
   2   4   Computer Architecture and Organization
   3   4   Operating Systems Principles & Design 
   2   4   Operating Systems Configuration & Use 
   2   4   Net Centric Principles and Design 
   2   3   Net Centric Use and configuration 
   0   3   Platform technologies 
   2   4   Theory of Programming Languages 
   3   5   Human-Computer Interaction 
   1   3   Graphics and Visualization 
   2   5   Information Management (DB) Theory 
   1   4   Information Management (DB) Practice 
   2   5   Legal / Professional / Ethics / Society 
   2   4   Information Systems Development 
   1   3   Analysis of Business Requirements 
   0   3   E-business
   3   5   Analysis of Technical Requirements 
   2   5   Engineering Foundations for SW 
   2   3   Engineering Economics for SW 
   4   5   Software Modeling and Analysis 
   5   5   Software Design 
   4   5   Software Verification and Validation 
   2   4   Software Evolution (maintenance) 
   2   5   Software Process 
   2   4   Software Quality 
   2   3   Comp Systems Engineering 
   0   3   Digital logic 
   0   4   Embedded Systems 
   2   4   Distributed Systems 
   1   3   Security: issues and principles 
   1   3   Security: implementation and mgt 
   1   2   Systems administration 
   1   4   Systems integration 
   0   1   Digital media development 
   0   1   Technical support 
along with non-computing topics, which includes the mathematics you mentioned:

  min max  Knowledge Area 
   2   4   Risk Management (Project, safety risk) 
   4   5   Project Management 
   0   2   Digital Signal Processing 
   0   1   VLSI design 
   3   5   Mathematical foundations 
   3   4   Interpersonal communication  

For example, the ACM explicitly recommends software engineers learn both "Analysis of Business Requirements" and "Analysis of Technical Requirements" which, unless I missed it, is only implicit in the list given here.

(I have omitted areas with min=max=0 for software engineering. The original table also includes weights for related fields. Eg, "Functional Business Areas" is an important topic for those going into Information Systems, but not for software engineering, "Scientific computing (Numerical mthds)" is weighted 0/5 for CS, but 0/0 for software engineering, and "Electronics" is weighted 5/5 for a computer engineer but 0/0 for software engineering.)

Re:A computer science study plan by anonemouse145 on Monday December 11, 2017 @04:58PM (#15900908)
A sprinkling of ethical project management turns a good developer into a great coworker.
Re:A computer science study plan by pliftkl on Monday December 11, 2017 @06:39PM (#15901820)
I don't feel like being an engineer obliges me any more or any less than any other employee regarding the ethical consequences of my work, nor do I have any stronger obligation than any other employee to not do unethical work.
Re:A computer science study plan by eesmith on Monday December 11, 2017 @06:53PM (#15901911)
Would you prefer this wording instead: "As a professional engineer, in our ethical decision making we must make sure to learn about the specific ethical questions related to software engineering"?
Re:A computer science study plan by btc_throughaway on Monday December 11, 2017 @04:07PM (#15900452)
Can you recommend a list of mathematics resources (paid or unpaid) that would serve as a full foundation?
Re:A computer science study plan by jlos on Thursday December 14, 2017 @01:10AM (#15920286)
In Canada, where the title engineer is a restricted term and thus the universities have common requirements, all engineers are expected to take

- Calculus 1-3

- Linear algebra 1-2 (though condensed into one course)

- Statistics

- Differential Equations (including partial differential equations).

I preferred reading the textbooks over going to class, so I can speak mostly from experience.

- Stewart Calculus

- Linear Algebra - Gilbert Strang

- Paul's online math notes for Differential Equations (PDF is formatted better than the website)

- Discrete Mathematics - Epp

These works are meant to be read in their entirety. Now by reading these, I mean read them, work through the examples youself, and do most of the practice questions at the end of the chapter. I'd also recommend supplementing with Khan academy, which is often better than many university lectures.

It's no small amount of reading, is genuinely difficult, and without difficult exams at the end of semester you may not retain the info. Also, consider the list a foundation for Mathematics in engineering less than something that will improve your work immediately.

That said, totally doable if you move slowly, take the time to understand the material, and be okay with working through using formulas that don't make sense at first.

Re:A computer science study plan by anonemouse145 on Monday December 11, 2017 @04:57PM (#15900897)
Rudimentary math is almost entirely sufficient. Meaning this should* have been learned early in life. I make web backends for e-commerce and I rarely do more than count and add.

Example life skills: -Balancing a checkbook or verifying an account balance (addition including negatives, ex. e-commerce) -Tipping (be familiar enough with percentages to eatimate a few simple ones in your head) -Baking (fractions, multiplication/division)

The only thing not covered is basic algebra, solve for X type stuff. If you can convert Celsius and Fahrenheit either way given one equation, you're golden.

Most of don't need set theory or calculus. We need rudimentary math that should be in any 101 course.

If you're going into some sort of engineering such as fluid dynamics or maybe deep financial territory like banking, then maybe you need some calculus. Otherwise, just be good at the 101 level.