Sunt self-taught. Daca m-as apuca din nou de invatat, as incepe clar cu C si as prioritiza fundamentele mai intai. Imo, e cel mai bun limbaj pentru a prinde eficient concepte care-s foarte abstractizate in limbajele high level.
C e suficient de high level sa nu-ti stea in cale si suficient de low level ca sa-ti formeze o gandire cat mai corecta asupra limbajelor de programare.
Pe langa asta, recomand si urmatoarea carte:
https://www.amazon.com/Discrete-Mathematics-Applications-Susanna-Epp/dp/0495391328
For an introduction: a "discrete math" textbook might be helpful. When I took discrete math in undergrad, I used the text by Epp (a few editions ago). It was a nice introduction, and also covers some baseline information that's useful if you're starting entirely from the ground up (e.g. truth tables, methods of mathematical proof, basic set theory, etc). If you're more familiar with statistics-ish math, some introductory probability texts will also cover some combinatorics (I don't have a good recommendation off-the-cuff tho).
For a more in-depth, applied approach, Concrete Mathematics by Graham, Knuth, and Patashnik is a really great text. It has a fairly steep learning curve and is targeted at an upper-undergraduate level, particularly for computer science students (though I know CS grad students who would probably find it a challenge too), but you'll know a lot more than the basic "how to count balls in buckets" stuff from an introductory discrete math or probability text after going through it.
Based on how you're asking this question, I'd guess the above options should satisfy what you're looking for. But, if you're aiming for even more advanced books in combinatorics: If you want to approach it from an algebraic perspective, works by Stanley are really solid. From an analytic perspective, the gold standard is Analytic Combinatorics by Flajolet and Sedgewick.
MTH 108 - Linear Algebra Third Edition - Kunquan Lan
MTH110: https://www.amazon.ca/Discrete-Mathematics-Applications-Susanna-Epp/dp/0495391328
MTH207 I dont remeber exactly just search in this subreddit I think someone will have its name.
^^Also never actually buy these textbooks off amazon or from the Ryerson bookstore. Search on kijiji or ask ppl in this subreddit. It'll save you tons of $. And one last thing, dont over study this summer. Have fun, relax. The next few semesters will be a lot so use this summer to have fun (as much as u can). Cheers.
I have the opposite experience. I started out with discrete math and now I am exploring analysis. I think the best intro to discrete math is Susanna Epp's Discrete Mathematics with Applications. It can serve as an intro to proof-writing, elementary number theory, combinatorics, discrete probablility, graph theory etc. There are no prerequisites other than being able to manipulate elementary algebraic equations.
I'm finishing up a discrete math course using Susanna Epp's textbook, and while it's pretty good, I just see it as a preparation for Concrete Mathematics.
As a side note, I never know how to go about math in how it relates to my major. It takes a lot of effort on my part to really learn the concepts in depth, and I have a hard time justifying that kind of investment before I really know what I'm eventually going to do for work.
Second year Computer Science student here.
Calculus is still required as you need it to properly analyze algorithms in your data structures class. Take a polynomial - what is it bounded by? Run times, etc. What's faster? N^2 or n log n? L'Hopitals rules to figure out asymptotic bounds, etc. Nothing intense, basically limits and L'hopitals. Integral Calc is not used at all.
Calculus II (Series, Bounds, Volumes of objects and etc) used for more graphics
Discrete Math is required because Comp Sci works on proofs. So what if your algorithm works for this case, does it work for all cases N, where N is an element of the integers? You can prove it using discrete math. More importantly, it's possibly the only math subject where you truly understand what a function is. Graph theory (which extends to Tree based Algorithms in a Data Structure course). Djistkra's alogirthm, greedy based ones, AVL trees, etc.
Linear Algebra (Required here though) is not really required unless you go into graphics, 3D programming, etc. I didn't need linear algebra at all for my algorithms/data structure course and it was only mentioned briefly in our computation theory class (Which CSE do not take, only CS kids take here - DFAS, Church Turing Thesis, Turing Machines, etc).
Use Khan Academy for Linear Algebra. Use this textbook for discrete math, it's great.
http://www.amazon.ca/Discrete-Mathematics-Applications-Susanna-Epp/dp/0495391328
I'm sure if you search "hard" enough, you could find it via "alternative" means.
If you're interested in this kind of math, I'd recommend picking up an introductory discrete math textbook. We use Susanna Epp's book in my computer science program:
http://www.amazon.com/Discrete-Mathematics-Applications-Susanna-Epp/dp/0495391328
It's one of the few textbooks that I'd say is worth the (USED!!!) price.
For math, I'd recommend picking up the following book:
http://www.amazon.com/Discrete-Mathematics-Applications-Susanna-Epp/dp/0495391328
It's much better than the Rosen text that the class uses. Since you're not starting until Fall, you have plenty of time to get comfortable with the math required for 225. Get very comfortable with proofs. Induction is what throws most people off in that class; if you get comfortable with proofs and induction, the class with be smooth sailing.
Discrete Math With Applications.
The dirty little secret is that all these busy-work style courses like Trig and lower division Calculus are the schools' cash-cow. They generate steady income. Anyway, judging by your posts you seem like a go-getter. Good luck!
If you want to know the whys you're going to have to study higher math like Real Analysis and Abstract Algebra.
For example, how do we know there's a solution for x^2 = 2? Because the system of real numbers is complete and therefore contains the solution for x^2 = 2. You'll see this in Real Analysis.
How do we solve a * x = b?
a^(-1) * (a * x) = a^(-1) * b by closure and inverse axioms
(a^(-1) * a ) * x = a^(-1) * b by associativity
e * x = a^(-1) * b by the inverse axiom
x = a^(-1) * b by the identity axiom
All these axioms together with a set define what's called a group. That's a notion in Abstract Algebra.
So, if you want to see math fo realz, there's a good intro text by Susanna Epp.
How good are you at discrete math? There's this very elementary, super easy discrete math textbook called Discrete Mathematics with Applications by Susanna Epp that anyone can study. After this book, Concrete Math by Graham/Knuth/Patashnik will be much more manageable.
My discrete mathematics book is regular $225, but I picked it up for $160 last night on sale. It was just printed this year, too, so there aren't used copies floating around (pretty drastic changes since the previous version, too).
Hopefully this makes it resellable next year at least.
I hope I'm not out of line with any assumptions i.make but you NEED a solid understanding of discrete mathematics. https://www.amazon.com/Discrete-Mathematics-Applications-Susanna-Epp/dp/0495391328 cover most of what you need. For data structures and algorithms this open source free course beats any online course I have seen yet AND covers all of what most colleges need: https://opendsa-server.cs.vt.edu/home/books
You can read the "Highlights of the Fourth Edition" on Page xvii through Amazon's preview.
Edit: This Amazon review is also relevant to you:
> I've taught discrete math from the 3rd Edition of this book at least 6 times, and struggled with several issues. (The textbook for our Discrete Math course is chosen by a committee in our department.) Much of a discrete math course involves looking closely at some very simple mathematics. Most of the mathematics is already known to a typical university freshman; what a set is, what a prime is, what an ordered pair is, etc. Of course they have had little rigor in these elementary topics, but still, they have the notions and vocabulary. The 3rd Edition pretended that sets, e.g., did not exist until one finally arrived at the chapter on sets. It's unnatural to lecture one's way through two chapters on logic and a chapter on techniques of proof, without being able to draw on simple examples from set theory. One gets tired quickly of examples of dogs and cats in highly artificial situations, and would like to say something about primes or the set of even integers.
>The 4th Edition corrects this problem by the addition of an introductory chapter which fixes the vocabulary and notation. This was a needed change. The 3rd Edition required considerable acrobatics in avoiding words like "is an element of" until Chapter 5 (Set Theory.) Really? I'm supposed to cover the proof technique of "division into cases" and I can't say "the set of integers of the form 4k+1?" So good change.
>Every semester, I get e-mails from my students asking if the previous edition of the text will suffice for my course. Usually, I say yes. In the case of my discrete math course, I'll have to say no. The modifications of this text are substantial. Besides the above, the old Chapter 8 (Recursion) is now incorporated into the new (much expanded) Chapter 5 (Sequences and Induction.) That is also a sensible change.
>My remaining complain about the text is that it's a bit condescending. I think it's bad form to always present mathematics apologetically. "There, there now, I know it's difficult, but we'll go extremely slowly and take tiny, tiny bites covered in catsup so you can scarcely taste them." There's no need for us at the university level to re-enforce the bad attitudes the students learned in high school. It's math. It's hard. You can do it, not because math is made easy, but because you are, in fact, clever enough.
>I would not have recommended the 3rd Edition to anyone, but I would recommend the 4th. I'm very happy with the changes.
You just need to take a course on Algorithms and Data Structures and you're good. You can browse first order logic as well, just so you know all the operations including XOR. Some stuff you can get away with using BitShift or binary but that's a lot of backend/low level stuff that you may never touch.
Since you are a mechy, I assume you have a decent math background. If you don't have a solid grasp of first order logic, you should check it out. The first few chapters in this is good enough
https://www.amazon.ca/Discrete-Mathematics-Applications-Susanna-Epp/dp/0495391328
If you ever go into networking or distributed systems, having basic knowledge of sets and graph theory is good too. Also in that book. Tbh, all the math you really need to computer science is in that textbook and Linear Algebra 1.
Then take an online course on Algo and DS. Get this book (CSLR) by MIT as reference.
https://www.amazon.ca/Introduction-Algorithms-Thomas-H-Cormen/dp/0262033844
​
Then check out Clean Code for good design practices: https://www.amazon.ca/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882
I was kind of all over the place so YMMV:
void array_func([static 100])
)[https://stackoverflow.com/questions/3430315/what-is-the-purpose-of-static-keyword-in-array-parameter-of-function-like-char]) don't show up in GIOS though and I hear that's "the C class," so this may or may not be worth it.If you do want a head start for CS1101S, you can take the following Coursera courses:
https://www.coursera.org/learn/programming-languages
https://www.coursera.org/learn/programming-languages-part-b
They are based on the same materials taught in CS1101S, but with more rigour in their definitions, more emphasis on the benefits and trade-offs of functional programming, and also share the same goal of communicating computational process concisely as opposed to just strewing a bunch of code together and producing something that works. I took those courses during NS and CS1101S was more of a recap with more additional practices.
Do take note that the languages taught are certainly different; the Coursera courses use Standard ML and Racket while CS1101S uses Source, a subset of the better parts of JavaScript with a largely functional-style standard library. However, the language is not the key here and the goal is to establish a framework in your mind on how to reason and write programs that that communicates your ideas concisely.
There are also additional topics like Order of Growth, which you can refer to u/wild-berry-berry's fantastic reference to Abdul Bari.
If you want to clear your CS1101S requirements earlier, NUS has a programme called iBLOC; if you're an NSF, you can take CS1010X near the end of your service and transfer the credits earned in place of CS1101S when the semester starts. This way, you can fast track and take certain modules such as CS2030S as early as your first semester. Do take note however that CS1010X favours Object-Oriented Programming (OOP) much more over its functional counterpart. If you do want to dive into OOP too, you can follow up from the Coursera course mentioned earlier and attempt the next part:
https://www.coursera.org/learn/programming-languages-part-c
Lastly, do study discrete math if you're not familiar with proving; it is the backbone of CS.
Hope it helps.
Can you get Discrete Mathematics with Applications https://www.amazon.com/dp/0495391328/ref=cm_sw_r_cp_apa_i_lf2vCbG0MVRXJ
While not about logic in the philosophical sense, reading Discrete Mathematics with Applications, 4th Edition really helped me understand the fundamentals of Mathematical Logic
> How do you think I'll struggle?
The reason I think you'll struggle is because you can't reverse engineer grad school exams, assuming your program is a decent stats program. You have to be more open to learning more when you need to learn it, whether it be for school or for your professional life. (Yes, I do learn in my full-time job. I've learned around 4-5 different programming languages in the two years I've been in this job.)
One thing I should emphasize is that although you did well in Statistical Methods, the grad-school version of this (in my experience) is much more theoretical and proof-oriented. I got an A in the grad-school version, but it was by no means an easy A, and I tutored the calculus-based probability and statistics material for about 3 years in my undergrad. The class definitely put me on edge at times.
> Any tips to study technique? Should I really never look up any solution? Even if it takes weeks to solve a problem? I don't think my University has any introduction to proof courses, I think you just have to know proof or learn it on your own.
Get your hands on a Discrete Mathematics book - my favorite one is the text by Epp (see https://www.amazon.com/Discrete-Mathematics-Applications-Susanna-Epp/dp/0495391328/ref=sr_1_1?s=books&ie=UTF8&qid=1503020282&sr=1-1&keywords=discrete+mathematics+with+applications). You can read the index of this to get an idea of what it covers. But basically, Discrete Math goes through the logic of how a proof is constructed to guide you through proofs.
> Any tips on that? Never taken notes before, except for in lectures to not fall asleep, but I never look back on the notes I take.
Notes are essential. Our minds only have a finite amount of memory space, and we forget things. You need to take notes with the mindset that you'll probably be using this stuff later, and if you need to re-learn it again, you can read your notes and brush up on it. In my case, I've kept all of my grad school notes.
Have you tried searching Discrete Mathematics?
These should cover everything you need to learn an way way more.
> My algorithms/discrete courses on the other hand were excellent and were extremely challenging.
Upper level math courses usually involve original thinking to some degree. Now, not every student has to make some unique solution for every problem, but the problems don't usually have cookie cutter solutions like you see in calculus, etc.
For example, from everything I have seen of discrete math courses (I have never taken one), the number theory section is really only dipping your toes into what is in a proper undergraduate number theory course. Compare the contents of the number theory section of this discrete math text with the contents of Rosen's number theory text (pdf link). Also consider that Rosen's book is actually written with applications in mind, instead of pure theory.
It just happens that lower level calculus classes focus less on "independent problem solving." However, it doesn't really have to be this way. For example, go look at any math olympiad style geometry question. For whatever reason, lower level math courses tend to concentrate on rote memorization.
You need Susanna Epp's Discrete Math. Her stuff can be ever so slightly rough at certain spots, but absolutely phenomenal everywhere else. But there's Book of Proof by Richard Hammack[FREE] to help you overcome these difficulties.
For a slightly different take on essentially the same material you could also try Mathematics: A Discrete Introduction by Scheinerman. Also a very gentle book.
While it's been too long for me to remember how to do those problems I can recommend a book that might help you. Check with your school's library to see if they have it. As for videos MIT has an open course here that might help. Hopefully someone else in this sub can help you, but for the remainder of your course the above two resources may come in handy
http://www.amazon.com/Discrete-Mathematics-Applications-Susanna-Epp/dp/0495391328 This was the book my course used, its pretty good.
MIT OCW for video lectures. The book we used in class was Discrete Mathematics with Application by Susanna Epp. You can probably look up the syllabus for the discrete mathematics course at the school your going to.
To add to other answers, Khan Academy doesn't teach math subjects(topology, group theory, differential geo, real analysis, whatever) per se. To get to the point where you can start reading intro to math subjects you want to be "mathematically mature" which can be attained from textbooks like those below(prerequisite: 7th grade algebra):
Book Of Proof by Richard Hammack[Free] or Discrete Math by Susanna Epp.
Biggest two subjects in pure math in undergrad are abstract algebra(linear algebra is part of it) and real analysis. Most examples in elementary abstract algebra are sourced from elementary combinatorics(counting) and elementary number theory. Knowing those two will help you ace undergrad abstract algebra. Also, if in addition you take an intro to proofs course you'll be way ahead of most anyone in undergrad pure math classes.
Wipe your tears and study these books below to propel you way past most undergrad math majors:
How To Think About Analysis by Lara Alcock
Problems and Proofs in Numbers and Algebra by Millman/Shiue/Khan
Linear Algebra Done Right by Axler- newest edition is much more beginner-friendly
Good Luck and stop crying!
Intro to Discrete Math will ease you into Abstract Algebra. I find this book by Susanna Epp phenomenal for that.