[Boards: 3 / a / aco / adv / an / asp / b / bant / biz / c / can / cgl / ck / cm / co / cock / d / diy / e / fa / fap / fit / fitlit / g / gd / gif / h / hc / his / hm / hr / i / ic / int / jp / k / lgbt / lit / m / mlp / mlpol / mo / mtv / mu / n / news / o / out / outsoc / p / po / pol / qa / qst / r / r9k / s / s4s / sci / soc / sp / spa / t / tg / toy / trash / trv / tv / u / v / vg / vint / vip / vp / vr / w / wg / wsg / wsr / x / y ] [Search | Free Show | Home]

Hello, /sci/. I have a few questions to ask. 1. How do I get

This is a blue board which means that it's for everybody (Safe For Work content only). If you see any adult content, please report it.

Thread replies: 36
Thread images: 3

File: Gennady_Korotkevich.jpg (140KB, 1200x800px) Image search: [Google]
Gennady_Korotkevich.jpg
140KB, 1200x800px
Hello, /sci/. I have a few questions to ask.

1. How do I get to an expert level in competitive programming? (You can assume I'm a beginner with no previous experience.)

2. What kind of mathematics do I need to excel in programming? (You can also assume I'm learning basic mathematics and I'm in highschool) Pic related is considered a god in competitive programming and he's very good at mathematics.

Thank you.
>>
File: Rory_Ulysses.png (280KB, 500x376px) Image search: [Google]
Rory_Ulysses.png
280KB, 500x376px
Read Knuths Art Of Computer Programming (nobody ever finishes) for the math and practice C++ and a scripting language regularly. Then make a github account and read a lot of code

http://www.cplusplus.com/doc/tutorial/
http://cpp.sh/
https://en.wikipedia.org/wiki/The_Art_of_Computer_Programming
>>
>What kind of mathematics do I need to excel in programming?

none
>>
>>8409754
Tbh,
You have to be proficient with Graph Theory and some Calculus, at least.
There'll come a point when its gonna be more than useful
>>
>>8409743

Addressing the questions backwards:

The math depends on what you are programming. A lot of coding is problem solving - figuring out how to write a program efficiently. Learning math is probably the easiest way to develop a good mind for problem solving, though I've personally always been a fan of learning basic logic first. (You'll probably need to learn some logic at some point, but CS logic books/classes tend to be crap. Grab a textbook and work through it on your own.) Something like this might do:

>https://www.academia.edu/19781634/Teach_Yourself_Logic_2016_A_Study_Guide

Anyway, for math you'll mostly want combinatorics, discrete, and linear algebra. Probably Calc 1 will be a prereq for those. If you're interested in uni, I suggest a double major in math and CS - you don't need it, but it helps. Also, if your high school has a math team, join it. They learn a lot of advanced subjects that will really help push you forward.

Read this and then decide if you really want to be a programmer:
>http://www.catb.org/~esr/faqs/hacker-howto.html

If so, his suggestions are good - do problem solving puzzles, hone your attention to detail, and start with an easy language first, like python. C++ is fine if you have a tutor to help you debug and teach you the non-obvious stuff, though I suggest starting with a procedural language.
>>
>>8409751
bad advice
>>8409754
he's talking about competitive programming

>>8409743
contact people who know what they're doing. your university probably has an ACM ICPC team that trains, and your best bet is to get one of them to coach you (they want and like to coach people, we coach people in our uni regularly). you just need dedication.

other than that, if you're a beginner you need to start slow. since you know tourist, you know topcoder, and probably codeforces too. those are amazing sites for practicing, and have great tutorials on many things. here's some basics you should start with:

- Basics of C++ (some online tutorial, I like http://www.cplusplus.com/doc/tutorial/, ignore dynamic memory, pointers and classes for now)
- C++ STL (from https://www.topcoder.com/community/data-science/data-science-tutorials/power-up-c-with-the-standard-template-library-part-1/)
- Basic problems (topcoder div2 250, codeforces div2 A/B)

after you got these basics down well (1-4 weeks depending on how much programming experience you have) you can start learning the ICPC syllabus. it's complicated to explain it quickly, but here's some topics I like to start coaching with:

- Dynamic Programming Basics (https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/ it says advanced but it's not)
- Basic Graph Algorithms: DFS and BFS

but the icpc syllabus is huge. you're going to need some very specific math (probability and elementary number theory with a bit of algebra come to mind) but you'll pick it up as you go

here's a tour through the icpc syllabus:
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.352.1749&rep=rep1&type=pdf

all in all, the most important quality and the one that will take you furthest is persistence, both for powering through difficult topics, to continue training for long month and years, and to fight and struggle with problems. look for a coach.
>>
What kind of maths do you need for competitive programming?

Discrete Mathematics, mainly graph theory, number theory, combinatorics, geometry... Competitive programming is not so different from math competitions.
>>
And yes, tourist is Competitive programming's god, MAYBE in the future we'll see Gennady's algorithm or something like that.
>>
>>8409743
1. Practice.
2. None. But do all of it so you can be more than a code monkey.
>>
>>8409751
Thanks for this advice. I'll try my best. I want to learn the math but don't you TAOCP would be overkill? Moreover, I haven't heard of anyone finishing the complete volumes.

>>8409779
Just these many topics?

>>8409812
Thank you for this. So I should start with logic and then move onto topics like discrete maths and the rest, right?

>>8409829
Thank you for explaining this clearly. And you are correct, persistence is what matters. As for a coach, I don't know whether I'll find one so I'll stick with self-studying.

>>8409845
>>8409850
Thanks.

>>8409829
>>8409751
Why is C++ the preferred programming language for competitive programming? Why not something like Python. I have also seen some guys use obscure languages like Lua.
>>
>>8409751
Also does anyone know where I can get the pdfs of complete TAOCP online? Thanks.
>>
Is codecademy.com reliable?

I used it to learn html and many other languages, but it left out many features of specific languages.
>>
>>8409977
again, if you're going to university, they probably have an icpc team. ask around.

C++ is preferred for several reasons. it lets you access low level fast instructions (bit manipulation, etc) with very little overhead. it has a very powerful default set of efficient data structures, the C++ STL. it's a very familiar and popular language for many people, because everyone knows C. it's flexible, it's procedural, it's straightforward, it's fast.
>>
>>8409999
you're not supposed to waste time learning specific languages. if you're not at the point where you can pick up a language by reading the documentation and some examples in a couple days, you need to learn something more serious. ocw.mit.edu 6.00sc is a good start.
>>
>>8410090
Do you refer to SICP videos by Abelson and Sussman?

>>8410089
Thanks for C++ details. Not sure if my uni has an ICPC team though.
>>
>>8409743
>1. How do I get to an expert level in competitive programming
Do your acm.timus.ru practice on a daily basis. Take part in all codeforces.ru and topcoder.com competitions. On codeforces.ru you'll also find announcements of any other important competitions.

Excel in all standard algorithms. Know how and why do they work, learn to prove their asymptotic time complexity and asymptotic space complexity.

Good knowledge of your programming language is important too. Read whatever resource that helps you understand it better.

>2. What kind of mathematics do I need to excel in programming?
The more math you know, the better it's for you, mathematical education alone can bring you pretty damn far from usual CS brainlets that struggle with fucking qsort and fear matrices. I suggest learning mathematics from first two courses of math bachelor curriculum (linear algebra, baby tier combinatorics, analysis, geometry).

It might be helpful to look at Knuth's Concrete mathematics book as this kind of discrete mathematics is especially useful in competitions.
>>
>>8410180
Thank you for this.
I'd be be delighted if you can help me know a more structured guide of learning maths in general (the topics and how to's)?
>>
>>8410190
You can try MIT OCW mathematics https://ocw.mit.edu/courses/mathematics/
>>
>>8410198
Great. Thanks! This is awesome. I'll check them all. But for regular access, do you have any books to recommend?
>>
I feel like this is the most helpful /sci/ has ever been. Kudos to you anons.
>>
>>8410860
OP here. I absolutely second this. I feel if you ask the right questions, sci is always a great place.
>>
>>8409751
Can anyone link me to good github tutorials? I'm a total beginner. Thanks.
>>
Until you will get on the level of codeforces div2 C you won`t need any math at all (Except for basic combinatorics and graph theory). Particular algorithms are also used very rarely untill div2 C. What you need is experience and dedication. Like some previous anon said, you need to start slow. I remember that when i was starting, i was trying to solve contests and was getting really frustrated all the time because i coudn`t solve shit. You need to understand that experience is the most crucial part here and that you will learn all the necessary mathematics with time. What i would as a beginner is go here http://acm.timus.ru/problemset.aspx?space=1&page=1 and try to solve problems in order of their difficulty. Also write weekly contests on codeforces(you can try visual participation if you can`t participate in the real time) and finish all the problems using editorials.
And yeah, if you are studying in uni, try to find a local acm club or smth(we have them in almost all unis in Russia) and they will probably help you.
And remember that consistency is the most import thing. Good luck.
>>
>>8411725
All the math and algorithms that you need as a begginer is basically some course from coursera on algorithms and data structures. This will cover everything that you need for the next year.
>>
>>8411725
>>8411726
Thank you anons. I'll really remember you advise. Consistency and Persistence :)
>>
File: 20160118_16.37.20.jpg (8KB, 261x188px) Image search: [Google]
20160118_16.37.20.jpg
8KB, 261x188px
>>8409743
>programming on a whiteboard
>>
>>8412225
Why do you think so?
>>
>>8410259
Anyone has any suggestions?
>>
Which one should I pick first - SICP or HtDP?
>>
>unironically doing competitive programming
>>
>>8411702
imo drop the tutorials and start reading/strategically skeeming documentations and books
>>
>>8415520
Thanks! Can you elaborate? Documentations and books on what?
>>
>>8409779
MUH
O(2^n*n^r) THEORY
MUH
MUH
>TOO STUPID TO DO REAL DISCRETE MATH THEORY
>>
>>8417690
REAL DISCRETE MATH THEORY?
Also, anyone has any MIT OCW recommendations to get good in mathematics and programming?

Which mathematics course should I first take on MIT OCW for beginning in the subject in general?

Please help me /sci/. Thank you :)
>>
>>8409743

To get started

>Learn C++

Programming: Principles and Practice Using C++ by Stroustrup
C++ Primer by Lippman, Lajoie, and Moo

>Learn Data Structures

Data Structures and Algorithms in C++ by Drozdek
Data Structures and Algorithms by Aho and Ullman
Data Structures & Algorithm Analysis in C++ by Weiss

>Learn Proofs

A Transition to Advanced Mathematics by Smith, Eggen, and St. Andre
Book of Proof by Hammack
How to Prove It: A Structured Approach by Velleman
How to Read and Do Proofs: An Introduction to Mathematical Thought Processes by Solow

>Learn Algorithms

Introduction to Algorithms by Cormen, Leiserson, Rivest, and Stein
Algorithms in C++ Parts 1-5: Fundamentals, Data Structures, Sorting, Searching, and Graph Algorithms by Sedgewick
Algorithm Design by Kleinberg and Tardos
The Design and Analysis of Algorithms by Kozen

>Learn Pre-calculus

Precalculus Mathematics in a Nutshell: Geometry, Algebra, Trigonometry by Simmons
Basic Mathematics by Lang

>Learn Calculus

Elementary Calculus: An Infinitesimal Approach by Jerome Keisler
Calculus: An Intuitive and Physical Approach by Kline
Calculus With Analytic Geometry by Simmons

>Learn Probability

Introduction to Probability by Bertsekas and Tsitsiklis
Probability in Electrical Engineering & Computer Science: An Application-Driven Course by Walrand

>Learn Graph Theory, Combinatorics, Number Theory

Introduction to Number Theory by Hardy and Wright
Combinatorics and Graph Theory by Harris, Hirst, and Mossinghoff
Combinatorics: Topics, Techniques, Algorithms by Cameron

>Learn advanced stuff

http://4chan-science.wikia.com/wiki/Computer_Science_and_Engineering#Discrete_and_Computational_Geometry
http://4chan-science.wikia.com/wiki/Computer_Science_and_Engineering#Advanced_Algorithms_and_Mathematical_Optimization
http://courses.csail.mit.edu/6.851/
>>
>>8418628
Thank you, good sir! This is excellent.
Thread posts: 36
Thread images: 3


[Boards: 3 / a / aco / adv / an / asp / b / bant / biz / c / can / cgl / ck / cm / co / cock / d / diy / e / fa / fap / fit / fitlit / g / gd / gif / h / hc / his / hm / hr / i / ic / int / jp / k / lgbt / lit / m / mlp / mlpol / mo / mtv / mu / n / news / o / out / outsoc / p / po / pol / qa / qst / r / r9k / s / s4s / sci / soc / sp / spa / t / tg / toy / trash / trv / tv / u / v / vg / vint / vip / vp / vr / w / wg / wsg / wsr / x / y] [Search | Top | Home]

I'm aware that Imgur.com will stop allowing adult images since 15th of May. I'm taking actions to backup as much data as possible.
Read more on this topic here - https://archived.moe/talk/thread/1694/


If you need a post removed click on it's [Report] button and follow the instruction.
DMCA Content Takedown via dmca.com
All images are hosted on imgur.com.
If you like this website please support us by donating with Bitcoins at 16mKtbZiwW52BLkibtCr8jUg2KVUMTxVQ5
All trademarks and copyrights on this page are owned by their respective parties.
Images uploaded are the responsibility of the Poster. Comments are owned by the Poster.
This is a 4chan archive - all of the content originated from that site.
This means that RandomArchive shows their content, archived.
If you need information for a Poster - contact them.