Hi, i'm going to begin studying computer science in two months, and im looking for some advice. I have a highschool level degree in ICT, so I know some if the basics e.g. I can write a simple calculator in python, c and java, I can make a simple webpage, I know the basics of php, setting up a windows and linux server. But I did no real paper writing, and only really simple maths and physics.
So im a bit worried because university studes is going to quite a bit more challenging. I know that i'll have a python course and that I'll mainly be using java, so im trying to learn a bit more of both. But other than that, what would you recommend I do to prep before school starts?
Also, will any laptop do? The keyboard on my current laptop doesnt work properly so I need so get a new one and I was thinking about buying a HP ProBook with an i3 and 8gb ram, (but I loved the keyboard on the ThinkPad so I might get one of those if I can scrape together the money).
If you have the basics of the languages you should probably start learning algorithms and dive into OOP concepts, basics of computer architecture, networking and probably improve maths skills since usually it is also important. You can check:
There are a lot of begginer friendly videos about some computer sience concepts. Check playlists: Introduction to Computer Science and Programming in Python Mathematics for Computer Science Computer Systems Security Design and Analysis of Algorithms or any other you feel suitable.
About practise I think you can check suggestions from threads below:
This guy is giving you great resources. I totally +1 this but might I recommend you figure out the language in which your instructor is going to teach first so that you are prepared for the class. It may seem odd to do that since Object Oriented Programming languages realistically only vary in syntax and some usage classes but since they will start you in OOP you will want to know the language they begin with so that you can hopefully breeze through your first few classes. They will likely start you on either Python or Java (god that word.. java)
PRO TIP learning C will be the most valuable language to learn.
Id recommend one that has good linux support. I know the systems at my school all run RHEL/Fedora so if you like having the same exact environment to run your programs (no such thing but youll learn that later) then that would be something to look at.
to be completely frank.. a t470 is the one id choose
No it doesnt game its not extravagant but it has some legs up.. It has a core i5 .. great battery life.. its fairly ruggedly built and it has only ssd storage so its zippy and quick you can throw the OS of your choice on or dual boot which on a lenovo laptop is a tricky find sometimes. It might be 884 but this is also a laptop thats designed to last you 4+ years of education. Its not cheap but its a investment.
Also honestly its the kind of laptop that its like I will buy the base model and if I find i need more ill save down the line by being able to upgrade its nvme ssd and its ram to 32gb myself
I would touch up on your math skills your going to have to go through the calculus classes (usually I and II). A discrete mathematics course if not required would be pretty helpful to take (if not required it could fill an elective) .. Your going to want to brush up on your physics. I know at my school they lump you in with the EE's in the 200 level physics course... yeah I know.. it sucks LoL. Last but not least you will have a probability and statistics class which is hard but important.
Basically the way you will see your first two years go is Math + into comp sci classes (usually in python or java) then you will hit some sort of systems programming course (almost exclusively in C) and some EE courses like a digital systems course to teach you how binary and machine languages work. After that they will bash your head in with data structures so just get the attitude to love these things now. After that you will probably have some sort of computer architecture and theory of computation course. Then for the last 3 semesters its all you except a few high level classes on OSes .. SoftEng.. and my favorite.. algorithms
PS I am not a computer scientist (i like to call them software engineers but I know it varies more then that) ... I am an Electrical Engineer. I have alot of friends in that field and have taken more CS then needed for my EE degree so Ive got some background in knowing how the degree goes
I'd go with what the other users have said. If you've already got a little language experience in a range of languages, you're already set to go. Try not to over-prepare. The point of the course is to teach you the foundations and then build upon them, so just play around with bits that interest you and try not to focus on learning material ahead of time given that everyone will be assumed to know little about CS at the start anyway.
Exactly. If you know more then you are supposed to you will find yourself bored in a course and that is never good for a study ethic. That being said when you do get into the course of your degree its totally fine to be competitive by nature
One thing you might want to consider is what you want to do in the long run if you know. So for example I wanted to work in security which have dictated what course i want to take, projects to work on, and even the computer i bought. If you know the stuff you want work on will require a number of VM or requires more memory. You might want to look in having a computer or access to a computer that has more than 8 GB or memory. Because my problem all the way through school was i never had enough memory for the number of VM i need to run for testing.
I think we'll start with python so I have my python book from when I was studying ICT (this book) . The ThinkPad I was thinking about buying is the E470 it has a i5, 8gb ram (with one ram slot free so I can add another 8 gb), a 256gb ssd and a GTX 920MX.
Id like to be well prepared for the programming classes so I can forcus more on maths and physics sence im not as good at them. And I can take a test in some courses and if I pass I can just skipp all the classes.
Honestly I'd stay away from hybrid GPU setups my choice only had an Intel card which will prove to be far less of a headache when it comes to Linux down the road
I like that your studying but bear in mind these classes are meant to teach you good programming practices as there's alot of bad programmers out there lol
What about a MacBook Air, it has a i5 and 8gb ram, I know most people on this website dislikes them, but presonally i quite like them, the only thing im hesitant about is the screen, which isnt ips and only 1440x900.
To be frank with you they are not that great I mean it's true that they are fully posix but besides that the design while pretty isn't useful. It's hard to grip while moving.. Its easy to steal. It's way too much money for the hardware. It limits the hardware due to lack of good cooling.. Its hard to install Linux on. When you get to classes that involve assembly language and c some tools are not available. Trust me stick with the lenovo
This is my first semester in CoSci and we are learning algorithms and data structures. I'm so lost because it is like learning a new language. I need a Rosetta Stone to interpret, any ideas on how to practice? Or how to make sense of it? Linear and nonlinear nested IF statements vs CASEOF and OOP vs IDK help
To understand the concept, read your textbook. During first couple weeks of my first computer science class, I barely read the textbook, and I struggled understanding concepts. What really allowed me to understand the content, was reading the pdf and creating comments and notes, as a example these were some of my notes
I highlighted/underlined bolded words and their definitions. When the book had sample code, I added comments to each line for what the line did.
If you don't like reading textbooks, you can look up topics on youtube. Just find a video with an instructor you can understand and watch it on the topics.
For code, don't just copy completed github code, make an attempt at writing the code. If you have issues, get help from the instructor. If you need practice on coding try http://codingbat.com/java and if you are having issues with what is happening each line of code, try http://www.pythontutor.com/visualize.html#mode=edit
Computer Scientist here ( what ever that means). Like OP, I took CompSci courses in high school which prepared me for college.
One of the things that was not mentioned by anyone was study groups. One of the ways that I learn best is by trying to teach others. That forces you to get a better understanding of the material and it allows others to check your understanding, calling you out when you misunderstand something and doind more research when something needs to be broken down better.
This also exposes you to different ways of attacking the same problem. At the end of the day most CompSci problems break down to math and computation problems. Unlike those, there are many different ways to approach a problem in the CompSci field, all with their own strengths and weaknesses. Understanding this will allow you to to be a better student.
Just for the record, I work in IT and have never had an official job as a Computer Scientis, but I have always applied the concepts that I learned to the IT field which has netted my employers dividends in comparison to your generic IT worker. When you understand computer logic, can code, and know advanced algorithms, everything gets reduced to simple math problems.