The Student Room Group

Computer Science Topic list needed and help needed! Please read.

I've been programming for a year now or so, from Python 3.4 to c# and java then now resting on C++. I learn really fast, so I'm quite advanced.

I was wondering does anybody have a list of topics I should/need to learn to improve my computer science knowledge to help in programming. Such as learning lambda expressions, delegates, events, polymorphism, Big O notation e.g. (btw I know the things previously said).


-Side question, does anyone know a free compiler to program in C++ - as my Visual studio subscription has ran out.

Thanks
Original post by ThisGuy_Mario
I've been programming for a year now or so, from Python 3.4 to c# and java then now resting on C++. I learn really fast, so I'm quite advanced.

I was wondering does anybody have a list of topics I should/need to learn to improve my computer science knowledge to help in programming. Such as learning lambda expressions, delegates, events, polymorphism, Big O notation e.g. (btw I know the things previously said).


I'd probably learn some networks/operating systems/architecture/compilers. Learning some software engineering principles also wouldn't hurt. Are you familiar with design patterns? Are you familiar with concurrent programming? All of the preceding topics should keep you occupied for a while..

You may also enjoy studying algorithms and solving problems on SPOJ/Topcoder etc.

Maybe learn a functional programming language, such as Haskell/Erlang/OCaml.

-Side question, does anyone know a free compiler to program in C++ - as my Visual studio subscription has ran out.


A free compiler? gcc.
(edited 9 years ago)
Reply 2
Visual Studio is free, get the express edition. Or I can get you a free Visual Studio 2013 key for free, I am registered with DreamSpark so I get them free as part of my college whatnot. And 1 year and you're moving on so fast? You might want to take it slow there buddy, stick with learning one thoroughly before moving. For C#, learn OOP, Regex, Databases, Linq, learn about JSON, the use of Client side programming, e.g REST API's and whatnot.

May I see a sample of one of the programs you have written for C#? Maybe a post on pastebin with C# Syntax highlighting would be nice. I could suggest you ways to improve since you want to improve.
Original post by Async
Visual Studio is free, get the express edition. Or I can get you a free Visual Studio 2013 key for free, I am registered with DreamSpark so I get them free as part of my college whatnot. And 1 year and you're moving on so fast? You might want to take it slow there buddy, stick with learning one thoroughly before moving. For C#, learn OOP, Regex, Databases, Linq, learn about JSON, the use of Client side programming, e.g REST API's and whatnot.

May I see a sample of one of the programs you have written for C#? Maybe a post on pastebin with C# Syntax highlighting would be nice. I could suggest you ways to improve since you want to improve.



A free Visual Studio 2013 key would be greatly appreciated, thanks.

I learn C# not for use and the syntax, just to learn about computer science it self, now I just use C++ for everything so I don't really use C#. I can't find some old stuff but I would of loved the criticism.

And thanks for the help.
Original post by Jooooshy
I'd probably learn some networks/operating systems/architecture/compilers. Learning some software engineering principles also wouldn't hurt. Are you familiar with design patterns? Are you familiar with concurrent programming? All of the preceding topics should keep you occupied for a while..

You may also enjoy studying algorithms and solving problems on SPOJ/Topcoder etc.

Maybe learn a functional programming language, such as Haskell/Erlang/OCaml.


Thanks for the help, a list is being compiled now with that included. :smile:
Reply 5
Original post by ThisGuy_Mario
A free Visual Studio 2013 key would be greatly appreciated, thanks.

I learn C# not for use and the syntax, just to learn about computer science it self, now I just use C++ for everything so I don't really use C#. I can't find some old stuff but I would of loved the criticism.

And thanks for the help.


Which version would you like it for? Which do you have installed?
Reply 6
Computer Science is so vast, there's so many branches of it, learning all of which in detail is impossible. One thing useful for any language is your data-structures + algorithms. Make sure you know how vectors, hash-sets, sorted sets etc. work. Learn about the sorting algorithms commonly used (learning about the bad ones is also handy).

As you're learning c++, you should dwell into implementing your own containers etc. Start with something simple like a scoped pointer, then move onto reference counted pointers, vectors and sets (then learn about thread safety and re-write them :smile: ). Learn how the CPU works and what things effect performance e.g. what kind of code is likely to lead to branch miss-predictions or heavy cache misses. c++ is a great language to learn that stuff with.

Lastly, try to learn how compilers work internally (c++ in particular). What exactly is a function call on a lower level? Why do templates need to be implemented in a header? A dynamic_cast may seem like magic but it isn't, there's a lot going on there (think about efficiency). Make sure you know about inline functions and how they differ to normal functions.
(edited 9 years ago)
Reply 7
I have to agree with Async. No offence, man, but I find it very hard to believe you have mastered three languages in < 12 months after starting (presumably) from scratch. Fast learner or not, that seems superhuman.

Total fluency and command over one language > general knowledge of 4.
Original post by Erestyn
I have to agree with Async. No offence, man, but I find it very hard to believe you have mastered three languages in < 12 months after starting (presumably) from scratch. Fast learner or not, that seems superhuman.

Total fluency and command over one language > general knowledge of 4.


I explained it to Async before, i haven't "mastered" them i just know them quite a lot. And I only used some of the early languages, like python and java, to learn and understand rules, concepts, ideas, how computers work, the difference between languages, best ones for what i do and others..... i agree i am not fluent and perfect in all the languages, but i only used the early languages (like python, java...) to learn and get introduced into programming and computer science - not to learn the syntax of them, there purpose of them and becoming "professional" in them.

Sorry for the confusion.
Reply 9
Ah, sorry I completely misunderstood what you were saying. So you're learning their function and how they interact. In which case, I'm very sorry if I came across as confrontational!

Quick Reply