2
$\begingroup$

I'm a high school student. I'm really into programming and mathematics and planning to study CS and mathematics when finished with high school.

I have a couple of questions concerning this issue:

Firstly, from maths point of view, what are the prerequisites and what subjects do I get in the first 2 years? I understood that Linear Algbera and Discrete mathematics are very important! So can you name an example of a maths textbook I may get?

Secondly, from a CS point of view, I already 'know' C#, F# and sometimes I play around with JS. Is it obligatory to learn ANOTHER language like python, java or c++? since knowing C# and F# already fulfils the 'need' of knowing different languages, F# with it's elegant functional-first programming paradigm and C# for imperative-first programming (technically, both F# and C# are multi-paradigm, which is awesome!)

To be more specific, I am into computer vision and ML. what textbooks do you think I may get in this area?

$\endgroup$

closed as too broad by David Richerby, Rick Decker, D.W., FrankW, Raphael Nov 10 '14 at 12:15

Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

  • 3
    $\begingroup$ What is in the course depends entirely on which university you go to. Most universities have their syllabus online: I suggest you look at the webpages of the universities you're interested in studying. $\endgroup$ – David Richerby Nov 10 '14 at 0:28
  • 2
    $\begingroup$ "I'm really into programming and mathematics and planning to study CS [...] what to expect?" - the best time in your life (; $\endgroup$ – Ran G. Nov 10 '14 at 2:16
  • 2
    $\begingroup$ Relax, sit back and enjoy the ride. Don't expact to profit much from knowing programming languages, though; the skills you want to pick up as a computer scientist are those than enable you to design PLs and build compilers for them, not so much use them. $\endgroup$ – Raphael Nov 10 '14 at 12:16
2
$\begingroup$

Firstly, from maths point of view, what are the prerequisites and what subjects do I get in the first 2 years? I understood that Linear Algebra and Discrete mathematics are very important! So can you name an example of a maths textbook I may get?

You want to select a textbook that "meets you where you're at" in terms of "mathematical maturity." Selecting too basic of a textbook will bore you, but selecting one that is too advanced will allow you to progress only at a suboptimal rate.

If you don't already know stuff that's in a typical discrete math course, I would suggest looking at this thread on Math.SE. My first Discrete Math course used Epp's book, but I found it somewhat basic.

If you already know some of what is covered in a typical discrete math course (e.g. elementary set theory, basic methods of proof, etc.--the stuff that would be covered in AoPS coursework), then I would highly recommend Graham, Knuth, and Patashnik's Concrete Mathematics. It is literally the book on math with respect to computer science theory. (If you learn everything in that book, I'd nearly guarantee you would know more math than 70-80% of CS students.)

However, graph theory and linear algebra are not covered in GKP's book. For linear algebra, I don't really know of a "great" textbook. For Graph Theory, I'd recommend looking at an algorithms textbook (CLRS's Introduction to Algorithms is really good), and perhaps going through this Coursera class and it's sequel. I learned so much in that course.

Also, take a look at Project Euler; it gives some fun math-based challenges that build quite nicely on each other. By solving those problems, I self-taught a ton of math from a very wide/eclectic basis.

Secondly, from a CS point of view, I already 'know' C#, F# and sometimes I play around with JS. Is it obligatory to learn ANOTHER language like python, java or c++? since knowing C# and F# already fulfils the 'need' of knowing different languages, F# with it's elegant functional-first programming paradigm and C# for imperative-first programming (technically, both F# and C# are multi-paradigm, which is awesome!)

To be more specific, I am into computer vision and ML. what textbooks do you think I may get in this area?

You'll probably be required to learn one of Java, C++, or Python depending on your school--most schools have a "favorite language" that they use by default in most of their classes. This "favorite language" is typically one of those three. (For example, University of Virginia uses Java as the language they assume all CS students know.) If you're really into computer vision, you'll probably want to learn C++; it's speed is important in that field, or so I've heard.

I wouldn't worry too much about learning other languages; having a foundation in a procedural and a functional language is great, and if you're comfortable with OOP, you'll be fine. When it comes time to use another language, you'll be able to pick it up really quickly with your background.

$\endgroup$
0
$\begingroup$

I'd say that most, if not all higher learning facilities, will have you learning at least one of the more legacy-ish languages, in my current one its C then transfer over to C++, I've heard other schools line up for point of Java though. Also if you really want to get a head up in the studying portion, linear algebra and discrete would definitely help you along, in the sense of learning basic and complex algorithms which are in themselves fundamental to the learning and proper implementation of many aspects of the languages, not just the ones listed above. This is me speaking from experience so far, and the fact that most people that I know who've attempted entry level positions are most always asked to implement some type of search, or sorting algorithm as a prelim for even a hint of interest from the hirer. In regards to the text to employ I'd recommend Practical __ Programming by Oreilly media as a lifesaver and a good tool to self teach, because at one point or another you'll have to start focusing on the application of the language in a manner that will most likely not go in tune with the given curriculum.

$\endgroup$
0
$\begingroup$

First year Your first year is carefully designed to manage the step up from school to university mathematics, focusing on the key ideas you will need later in the programme. Alongside core calculus and algebra, other modules develop discrete mathematics, mechanics, pure mathematics, statistics and computational mathematics - you do not need to have studied these subjects before. As a Single Honours student, you also have the option to study a completely different subject, such as a foreign language, alongside your maths.

Second year As well as having some choice of modules, you’ll now be introduced to some of the more advanced areas of mathematics, such as complex analysis, allowing you to develop your particular strengths and interests in the third year.

http://www.birmingham.ac.uk/undergraduate/courses/maths/mathematics.aspx#CourseDetailsTab

If you want to know more about JS

https://www.khanacademy.org/computing/computer-programming

I think you should firstly learn c++ , then go for java.

$\endgroup$

Not the answer you're looking for? Browse other questions tagged or ask your own question.