Heroku and Github have an integrated student pack, you can get a free tier of hosting on Heroku Using that, there are lots of articles about how to use different databases with Heroku and deploy your front and back end there (my group used this for 362).
That should hopefully be a good starting place. Also, if you haven't already, sign up for the full github student pack.
Made a hangouts group for newly admitted students where we can chat, ask questions about the registration process, find people in your classes , and etc
Join the conversation on Hangouts: https://hangouts.google.com/group/X7OJO6fVZClEevUo1
You are right, the solutions architect role is within AWS. You can read up on it here. The main differences I noticed from a typical SDE role is that you are not going to be doing a lot of coding and you are interacting with clients a lot more. During the interview processes, they really stressed that there is a lot of learning with this position as you try to understand all of the different parts of AWS.
Here was my winter project... that extended into spring and then through Capstone. Feel free to hit me up with any questions or advice. Would be happy to mentor on an Android app. https://play.google.com/store/apps/details?id=com.licktopia.thechampionofsudoku&hl=en
You can use Sublime SFTP for free, no need to pay the $30.
As /u/jmcisne12 said, get on board with Github.
One tool I use ALL the time is webhooks. Look here: https://www.digitalocean.com/community/tutorials/how-to-set-up-automatic-deployment-with-git-with-a-vps
So what's great about that:
you'll have your local copy (ie where you're working locally):
in one fell swoop, you can push your changes to your remote repo, and push your changes to FLIP.
If you are hellbent on not using git, use secure copy:
http://www.hypexr.org/linux_scp_help.php
Works great and is efficient.
Also, get comfortable with aliases if you haven't yet. Ie in ~/.bash_profile you could go
alias gpom='git push origin master'
So instead of typing out
git push origin master
every time, you could just do
gpom
If you've got the github student pack you can get enough DigitalOcean credits to run their lowest droplet for over a year, or a higher performance one for less time. They also have AWS on there.
I really, really like DigitalOcean and have used them extensively for personal projects, and even have 1 commercial project (e-commerce website) deployed there. Easy to use, low & predictable costs, great for low-usage stuff and just playing around.
Yeah, this project is super annoying. Let's toss 6 people strewn about the country together, not take into account experience or time zones, give them some horribly outdated "pair programming" constraint, and see what happens. Our group has a functioning site, though we had to cut corners and features to get it up.
Unit tests are typically automated. Use a testing library like mocha or jasmine for your JS tests. The point is to have a suite of tests you can run every time you make changes, to ensure you haven't introduced any new bugs. You don't want to waste your time manually testing every feature of your application every time you make a change.
For example, one of my unit tests makes a POST request to the server with some bad data, expecting the server to respond with error information. If the server responds as expected, I can say I have successfully tested my server-side validation for that page, and I know it's working. Things like that.
Not to be contrarian, but my copy The C Programming Language is one of my most dog-earred and thumbed-through programming books. It was hugely useful in both Operating Systems and Networks, and also in Algorithms too since my project group decided to use C. It's also generally regarded as a classic that every programmer at least claims to have read, if that matters. Honestly, given how C-heavy this degree program is, having a slim, yet authoritative C reference and tutorial is worth the ~$40 price of admission.
I think once you do 162/260?(data structures) you should be good to go for a lot of interviews. I was able to get my internship through my local university's job fair. I think small local companies would be your best bet from my experience.
I would grab a book like programming interviews exposed which goes over questions with specific data structures that you should have down. You could also try udacity's interview prep.
Side projects are good too because they give you something to talk about to recruiters/potential employers. Just choose one that you're interested in :D
For 165, I'd recommend taking the following course:
https://www.udacity.com/course/intro-to-computer-science--cs101
It's in a different language (Python) than you'll be using in the intro courses (C++), but it's really great at teaching the concepts that you'll be using in the first class at least. Python is also a way better beginner language than C++, in my opinion.
For 225, I'd recommend getting comfortable with proofs and induction as soon as possible. It's a different way of doing math than you're probably used to, and those were the two hardest concepts in my experience; everything else is a breeze.
HackerRank has a CTCI track that I used to prepare for interviews. Might be a nice way to do problems together.
They also do a 30 days of code challenge which helped me a ton, as well as different tracks for Java, Python, SQL, C++, etc. Something else to look into for group practice.
Since I was applying for jobs requiring different languages this helped me learn more about Python/Java/brush up on SQL/etc quick enough that I felt more comfortable with the language during interviews.
Kinda both. I started learning programming via freeCodeCamp. I built a couple small projects before I started the program which were pulled directly from the FCC curriculum - for example a pomodoro clock, random quote generator and a calculator.
While in the program I expanded from my vanilla JS projects and I focused on 3 areas:
I did the first 3 data visualization projects from FCC utilizing D3.js
I also did a couple of the backend microservice projects for FCC which taught me basic node and express.
Finally I started learning React, starting off by building my portfolio site (a great introductory React project btw). I built some more projects pulling ideas from React's example projects.
If you have any more questions feel free to ask! I learned through a lot of trial and error so I have some tips if you'd like to know more.
EDIT: grammar
Don't retake. It's expensive and you have a good enough grade to advance to 162. 161 didn't involve very much programming and 10 mimir attempts didn't encourage people to be careful. You probably need to spend more time programming for 162.
I learned C++ by reading C++ Primer Plus by Stephen Prata and solving all the exercises. I highly recommend that book for learning C++. If you're pressed for time, just solve the exercises.
340 has no textbook, there is some readings. First week is
https://www.ncbi.nlm.nih.gov/books/NBK6828/
325 uses Introduction to Algorithms (by CLRS) and starts with chapters 1,2,3,4 in the first few weeks
You could use a virtual machine to boot Windows. Virtual box is what I use on my mpb: https://www.virtualbox.org/. You will need a Windows OS image, which you could possibly download (not exactly within the bounds of legality). I'm confident this will work on your mac.
Tragically you will need winblows for MASM assembly, and more specifically to use the book's library for print statements and such.
The official site is just a tad on the stuffy side.
This should get you up and running.
I made this one last winter using sphinx. Since it generates web pages for documentation from reStructuredText, I got away with doing nothing web related for the project. My recommendation is to put in as little effort as possible into style, so use html/css generators or css frameworks as much as possible and put most of your focus on writing content.
I attended a coding boot camp (Codeup San Antonio). It was expensive, and hard to afford because it is full time and you can't work a job while attending. But, it absolutely delivered on its promise and got me and everyone else hired as developers after graduation. That's the reason to do a boot camp, they are a viable part of the modern tech job market. If you just want to learn JavaScript there are numerous free online resources, Free Code Camp is one that I completed and would personally recommend.
Linz waa the course book when I took 321 in the fall of 2020. https://www.amazon.com/Introduction-Formal-Languages-Automata/dp/1284077241
I want so bad to be able to recommend the class but he literally just assigned sections to read and gave us a couple of hw problems every week. Only 1 TA at the time so a lot of self teaching. If you're interested, better off grabbing Sipser's book and saving your money. Hopefully, it's been revamped or in the works.
It's deeply disorganized with little in the way of unifying themes: those themes exist, but the material is so scattershot that they get lost in the process. Assignments don't relate much to the OSU lectures which don't relate at all to the Udacity lectures which who the fuck know what the Visual Studio UI testing tutorial videos are? The OSU lectures are somewhat interesting, but they are far, far too brief and leave you with only a cursory knowledge of the topics purportedly covered. The disjointed projects often have only tangential connection to the course content, and, at least in the term I took the course, they were graded without any feedback at all. In fact, I am legitimately suspicious that the 362 TAs don't actually look at what they supposedly grade, just handing out 100s if it looks vaguely complete and compiles.
I agree that a course in testing is a good idea, although I think I would prefer it to be a significant part of a single quarter Software Engineering course. One of the absurdities of the current OSU post-bacc program is we take two whole courses in software engineering, yet both cover a miniscule amount of content, and not particularly well. If you want to discover all you missed in SE I, read Martin's Agile Software Development: Principles, Patterns, and Practices and Clean Code, and the Gang of Four's Design Patterns. There's definitely a course worth of content to be had, but we covered hardly any of it. Clean Code in particular will make you realize how crappy a coder you were prior to reading it, and will also make you wonder why the course which should have taught this stuff, didn't.
Yeah, there will be, although they were generally fairly easy, in order to make up for the time constraints. That said, be cognizant of your time on this exam as I found it to be a factor.
If you want some practice with algorithm design questions, you might consider getting a copy of Cracking the Coding Interview. Not only will it help with preparing for the 325 exams, but it will also start getting you into the job interview mindset. I also found Skein's The Algorithm Design Manual to be a far superior textbook to CLRS -- and it also has a ton of practice design questions -- so that might be worth grabbing too.
that is the suggested book but as a heads up, many people dislike it. i for one got very little value out of it. people have said this is much better: https://www.udacity.com/course/designing-restful-apis--ud388.
In my opinion, the best thing you can do is start by learning to use a prototyping tool like Figma. That way you can make a professional-looking design and have that to look at as you try to code it up. Just coding CSS/HTML without having any idea what you're even trying to make is difficult.
After that, as others have mentioned, take on a framework like React, then learn to use a component library. Material-Ui is one that is commonly used.
I did 102 total LC problems over the past year, 77 easy and 25 mediums. Honestly, at some point I had covered all the main ones and was starting to do more "obscure" problems, which didn't feel like it was as good for practice. So I repeated good questions I had already done after it had been a few months.
For anyone wondering, this and this list good questions to practice that will help you with common patterns/approaches.
I use Atom, which isn’t really an IDE I guess? But with the extensions you can still do pretty much everything except it doesn’t have intellisense autocomplete kind of stuff. Which I’m ok with for now.
This is the sftp extension I use, it’s a bit finicky to get the config file working right, so if you decide to go this way and hit any snags feel free to PM me. https://atom.io/packages/sftp-deployment
I used an ssh key because the it wouldn’t work with 2FA on otherwise, and it makes it really smooth. I used this tutorial to set that up: https://m.youtube.com/watch?v=vpk_1gldOAE
But before I set this up I just tested locally for the most part and then used a client like FileZilla to drag the files over to flip, and then would ssh into flip over the terminal and run “make” from there. It wasn’t really too much more work...
There's a textbook called Relational Database Design and Implementation by Jan L. Harrington (z-lib.org), I but never used it. The SQL lessons are all over the place on YouTube, and they're much better than the outdated lectures.
One tip for this class, I found that hosting your website on Heroku is a lot easier than on Flip server.
Basic tutorials: https://www.atlassian.com/git/tutorials
IMHO BitBucket does a better job of walking you through what Git is and how it works.
If you really want to learn about Git: https://git-scm.com/book/en/v2
Start @ Chapter 2 if you've already got things set up on your system.
Take the time to learn how to use Git at the command line level. Desktop clients are OK when you're getting started but to really do it right, you need to get comfortable doing it "manually".
I can't speak to the specific issue, but I'll make a shout out for MobaXterm. It's awesome and I like it way better than Putty. You can have multiple terminals open and arranged side by side or in a square pattern, built in FTP client, all around awesome.
I used this to make UML diagrams for 162. Not the prettiest diagrams you'll find but it's quick and simple to use. It made the process of planning out my classes so much easier. http://www.umlet.com/umletino/
https://teamtreehouse.com/tracks/beginner-android-development
Start here. You can probably do that one within the 7 day free trial. Let me know if you need any help with Android stuff... I've been at it pretty hardcore for the last 9 months or so.
https://teamtreehouse.com/tracks/full-stack-javascript
The first two modules I sped up the videos to get through them quick. Just learning the basics of javascript isn't that different from other languages, but worth just going through because there are some differences and to get comfortable with it.
https://leetcode.com/tag/dynamic-programming/
https://www.hackerrank.com/domains/algorithms/dynamic-programming
Obviously you'll want to go in order of increasing difficulty. Note that leetcode medium problems are likely beyond the difficulty of anything in the class.
You may be better served by simply practicing general C++ skills. This site gives a good overview of topics on the left menu bar - http://www.tutorialspoint.com/cplusplus/. Most of these things are covered in 161 and 162. With a little googling you'll find online resources that are 10,000,000 times better than the textbook. I'm taking the class, but he doesn't reveal the reading until the module for that week is unlocked. I can post what we've read so far later. Between classes I also spent some time solving hackerrank.com puzzles, which was a big help.
Fall 2015 Syllabus: https://www.docdroid.net/5LGgJoX/cs325tentativeschedulefall15.pdf.html
Personally, I found the textbook too dense to learn from myself but that could just be me.
I learned a lot more from office hours (which were sometimes hit-and-miss) and would also recommend checking out lecture videos from Professor Erik Demaine at MIT: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/
I don't print much, in this program or otherwise, but I do have a Brother laser printer (Brother HL-L2340DW https://www.amazon.com/dp/B00LZS5EEI/ref=cm_sw_r_cp_api_C-eFybBQ2D7D7). It's the best selling laser printer on Amazon for about $100. It has wireless, duplex printing, and airprint. I have it hidden and out of the way in a corner and can easily print from any of my devices. Can't recommend it enough.
Yeah, it's a text book, and it's not actually Automate the boring stuff, it's Python Crash Course here both books look the same as I have both, but this one is chapter by chapter the same as the class.
Thanks for the heads on up 225. I keep hearing that it's a heavy workload type class. I'm not looking forward to that. Thanks!
Just want to second this recommendation. I read Clean Code shortly after graduating and it paid major dividends once I started working. My company (Google) requires every code submission to go through code review by a domain expert and readability review by a language/style expert (at least until you get 'readability' status in the language in question) before its committed to the repo, which means you potentially have senior engineers (politely) tearing your code a new one every time you request review. Likewise, if you submit code for review without automated unit tests with code coverage > 95%, you will quickly be reminded of the error of your ways. In other words, the expectation is that your code is "clean" in exactly the terms which Robert Martin, i.e. Clean Code's author, defines it. Being able to write code well has meant that I felt like I was a serious and worthwhile contributor from my first change list submission, as opposed to a fraud who somehow slipped through the interview process. Had I submitted change lists in the style of my typical OSU project submission however, the first few months would have surely been confidence shattering and impostor syndrome reinforcing.
tl;dr: read Clean Code and apply it. You're coworkers will make you feel like a legit engineer, not a fraud, when you start working.
P.S. Martin's Agile Software Development and The Clean Coder are both worth reading as well. Apparently he's got a new book coming out later this year, Clean Architecture, which I am looking forward to.
Yeah, The C Programming Language doesn't cover data structures or algorithms at all, but it offer comprehensive coverage of the language itself and the kind of low-level program design you typically do in C. It also has a good introduction to *nix systems programming, and a handy reference to the standard library. I find the latter particularly helpful for getting a grasp on my options, and then I use the man pages to get details and examples if need be.
When I took SE1 in Fall 2015, the optional textbook was Software Engineering - Theory and Practice, 4th Edition by Pfleeger & Atlee.
For OS, the optional textbook was The Linux Programming Interface (TLPI) and The Linux Command Line 13.07 (which the instructor provided via a download link).
I would not recommend purchasing any of the optional textbooks for either of these classes since you can easily rely on lectures or the internet to get all of the information you need to do well in the class.
The Linux Programming Interface has been a recommended text for CS344 in past quarters. It's a pretty comprehensive tutorial and reference for Linux system programming and well worth having if that's a topic that interests you. For the purposes of the class though, it's total overkill. It will however make you look smarter if you put it on your desk at work. ;)
When I took CS361 in the Spring, it recommended the textbook Software Engineering. It honestly isn't very good and is very overpriced. Last I checked, they have a different instructor for 361 this quarter, so he or she may have a different textbook or none at all.
For an alternate, much more readable, and much more useful for job interview prep textbook, checkout Skiena's The Algorithm Design Manual.
Also, I think you can use pretty much any language that runs on flip for the course projects. C, C++ and Python are what's mentioned in the syllabus, but I distinctly remember Project 4 submissions which had been written for Node.js and also in Java.
I used C++ and JavaScript in my interviews. I would strongly recommend focusing on an object-oriented language with rich built-in data structures and of which you have a solid handle on the API. Java and Python are particularly good choices in this regard, although C++ is also a solid choice. Make sure you can at least get by in any language on your resume however.
For preparation, I used Cracking the Coding Interview extensively. Its description of the Google interview and hiring processes is extremely accurate, and its practice questions are very realistic and representative. Likewise, its advice on how to approach technical questions and how to methodically work through problems you've never seen before is invaluable. As a reference text for algorithms and data structures, I used The Algorithm Design Manual, a far more approachable and useful textbook than CLRS.
The book is just a supplement to the lectures, and can safely be treated as a reference text.
In terms of preparing for the course, just make sure your C programming skills are fresh, and that you're comfortable working the Linux command line. Snagging a copy of The C Programming Language probably wouldn't hurt either; I definitely had my copy within arms reach when working on programs 2 through 4. If you really want to over prepare, then doing a bash scripting tutorial or two will have you in good shape for program 1 as well.
All I can say is I am glad CS225 and CS 162 are over, and I was very happy to adjust my flair to Lv.2.
Still struggling to figure out what to take this summer, every time someone comments about a class I change my mind. Right now I am looking at 271 this summer (alone) and 325 next summer (also alone).
Heading to the beach this weekend (just to roam around, far too cold to swim with possible snowfall on Sunday), and hoping to get in more video gaming.
Will probably try to take some time to read more of Code Complete and Clean Code, and possibly read some more of the Python book I got. Speaking of Python, does anyone have any advice on which version might be more useful for starting with in this course? Is there anything that requires a specific version?
Here's the link... it needs some final beta testing anyway. A few loose ends need to be tied up but it should be overall pretty stable. https://play.google.com/store/apps/details?id=com.licktopia.thechampionofsudoku&hl=en
Just FYI I would not stay at Tigard Square unless you're only there for the event. The area is about a $30 Lyft Ride each way into and out of downtown Portland, Uber seemed to have less of a presence than Lyft but download Zailoo on your phone and it will compare options. Also if you haven't used Lyft or Uber before make sure you sign up with a discount code which will give you free credit on each ride, it's pretty significant with Lyft for the first time. Then if you go with other people, have them also sign up and you can get a few free trips.
I went to the showcase in December and after the event a few of us walked over to a sushi restaurant nearby, I think Sushi Hana. They have a big booth that fits like 12-14 people and the prices were really cheap.
drop CS50x, and do CS50p instead if you are not too far into it. Otherwise stay with the x version as to avoid jumping from tutorial to tutorial.
Them do this course, https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513
Or something along the lines, ideally, any DSA beginners course taught in python should prepare you well.
​
Also, look into local community colleges around you where you could take the first couple of courses in the program such as discrete math, computer architecture, and intro to programming.
If you are able to transfer some (or all) of these courses, You'd end up saving a lot of money.
open an account. Create a droplet(server), then ssh into it using your credentials. It's just like logging into flip. Then, you will need to install mysql and node.js. Below are the tutorials I used. I didn't set up PHPmyadmin admin, because it was extra work. I just installed it on the same server and accessed it using the command line. There are a tone of tutorials online on how to access mysql this way. To install and use PHPmyadmin you will need to have Apache installed. This probably means you will need two servers. One with apache, mysql & your database, and PHPmyadmin. The other server will have your node.js app. I don't know the full logistics of running PHPmyadmin, so you should find some resources.
https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-16-04 https://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-ubuntu-16-04
I used vim (well, SpaceVim) for 344 and do all development locally. I used SFTP and SSH from the command line to transfer files and remote to campus servers only when I needed to. I don't stay connected to campus servers and really just use them to test my code before submitting.
I've never bothered with doing remote development on campus servers. For 344 I just made sure I used the same compiler and flags that were used on campus.
You might be able to run VS Code from Windows (not WSL) and remote to campus servers: Developing on Remote Machines using SSH and Visual Studio Code
I'm not sure what kind of development environment 290 will require but I am just planning to do the same. Do development locally with WSL2 and probably VS Code since VS Code is pretty nice for HTML/CSS/JS (not as much for C), then just transfer files when I need to.
Yep, here is the Udemy course. I found it most useful for it's introduction to CICD with cloud platforms and introduction of Docker and Kubernetes.
For the API portion, I read API Design Patterns.
> Which folder should I initialize?
the folder where your source code resides.
So if your project was in /Users/osu-student/development/project/, you would 'git init' that folder.
Then you could do the command 'git status' to see that all your files are untracked. Set up a .gitignore file because you don't really want executable files in version control.
Also I recommend setting up aliases in bash profile. So a common one is 'gs' for git status, so you don't have to type out those words every time.
vi ~/.bash_profile alias gs='git status'
exit out,
source ~/.bash_profile
What you could also do since you said you want to commit this stuff to the school server is set up two remotes.
Here is a link I always use for setting up a second remote, explains it well: https://www.digitalocean.com/community/tutorials/how-to-set-up-automatic-deployment-with-git-with-a-vps
And https://help.github.com/articles/adding-a-remote/
So THEN, when you finally want to do a commit, you will push to two remotes (say the first remote's name is origin, and the second is osu)
git push origin master git push osu master
Then back to aliases, you could set these two commands up to go in one so you don't have to type it all out. Back to bash profile:
alias gpoom='git push origin master; git push osu master'
PM me if you have any questions or just reply here.
The code in the question accomplishes what you're looking for, including if it occurs in the middle: https://stackoverflow.com/questions/32413667/replace-all-occurrences-of-a-substring-in-a-string-in-c
The RemoveDigits function here looks promising. Looks like you would need to tweak a bit since you'll have an array of strings:
https://stackoverflow.com/questions/28353173/trying-to-remove-all-numbers-from-a-string-in-c
No, I understand your point quite well, and I never claimed that vim is better. I'm merely making the case that it's situational. Many people use multiple IDEs depending on the language they're using, and vim with plugins can be just as efficient as an IDE. I'm letting OP know their options.
I think the learning curve is higher and point-and-click GUIs are more accessible, and that could be a large reason why people prefer IDEs. I can't claim to know that 100%, of course, but certainly there are multiple factors behind why people use IDEs, not just "because they're more efficient."
And since you are pulling the 5% number from nowhere, I checked the most recent Stack Overflow developer survey, which was the best I could find, and it places vim at 26% of users. I won't claim that it's representative of all developers -- certainly the tool/IDE you use is going to depend on your exact job/project, viz. I wouldn't expect a large amount of vim users in a company that makes Windows desktop applications -- but I think it's a strong counterpoint to this 5% number and fits in my experience of it not being uncommon, as I stated.
These are good problems to start with to get a feel for the strategies. Then you can expand the strategies from these to other problems.
https://leetcode.com/discuss/general-discussion/460599/blind-75-leetcode-questions
Leetcode has a learn page that is really good, because you can focus on one topic at a time: https://leetcode.com/explore/learn/
The only problem with Leetcode Learn is that the example code is only available in C++ and Java, so you'd have to learn C++/Java syntax before you could do Leetcode Learn.
If you're just looking for something in Python, this course is recommend a lot: https://www.udemy.com/course/data-structures-algorithms-python/ (although personally I haven't done it yet)
It's not about what you know, it's about what you're capable of learning. That, coupled with drive and some experience will get you anywhere.
You'll never now everything dude. And I think that's something special about CS, you'll always have to keep learning. So far it's just been me googling how to do tests in python. The fact that you know how to compile code and get things to running is a step. The next is just marketing.
Go ahead and check out Github Pages. You can just host for free a static site with your github account.
I'm still early in the program(161, 162, 225, 290) but have started on a personal project from my other areas of expertise.
I was faced with a work problem involving DNA sequences and couldn't find a solution I was happy with. Since I had just taken 290 and thought the problem could be handled by javascript and a single page app I decided to tackle it... and I'm nearly done! After more polishing I may submit it to the BioJS open source project.
Do you have any work or home problems that you think can be solved by code? Alternatively, find a tutorial that builds a bigger project like Udacity's "Developing Android Apps" that builds a functioning weather app for smartphones or, if you're feeling brave, a Raspberry Pi Magic Mirror.
For 161 we actually had to track our hours one week. I still have that log so I posted it here: http://justpaste.it/q22h
That week was about 20 hours.
For 225 I remember it taking less than 161 but not much more.
There is a lot of busy work for both classes so finding a system that works for you will be really important in time management.
Things I wish I would have figured out sooner:
-Make sure you have any discussion board settings put to not send you an email every time someone posts anything otherwise you'll be overwhelmed.
-You should be able to figure out within the first couple weeks whether or not the lectures for the classes are worth watching for you.
Sounds like you're damned if you do, and damned if you don't. Crossing my fingers for some of the new instructors to teach some of these courses (Did they ever say which courses they'd be teaching?)
Wolford is rated a bit worse on rate my professor. http://www.ratemyprofessors.com/ShowRatings.jsp?tid=1856913
I would install Homebrew to manage your packages: https://brew.sh/
Packages I would start out with:
I would also install Xcode via the Apple Store, mostly just for the Xcode Command Line Tools.
You can also get free licenses through OSU for VMware and Windows so you can run it on your Mac. Install Visual Studio (not VS Code) on Windows which you'll need for CS271. You can also get the whole Microsoft Suite for Mac through OSU.
If you can solve https://www.hackerrank.com/challenges/primsmstsub
and then Kruskal's it will help you for CS325 with the concepts.
It was actually my favorite class. I even liked it more than many of the classes I took on campus
The best thing to do is develop a little bit of a niche outside of school.
Since you just started I'm assuming you only know C++, which is fine. Take the little bit of knowledge you have and run with it, unless you want to learn something else.
Before you start building anything, spend a day learning the basics of git and github on the command line. This is my favorite git/github tutorial. Whenever you create/finish a project create a readme that tells people what your project does and how to download, compile and run it.
You can implement any project you want really. I've never played mastermind, but if you want to give it a crack think about how you can break the game down in to steps. You need a board, you need to store data about the game (the code, turns remaining, solution check) - maybe a class would work here? Try to design it on paper and make a blueprint.
Here are some project ideas if you want to start smaller though. Some projects may be too difficult (right now) but some are definitely doable: Fibonacci, change return, fizzBuzz, reverse a string etc.
Start small and keep building. If you don't know how to do something: google it. Before long you'll be building something cool such as mastermind or a text editor, which will give you invaluable experience in your internship hunt.
Many, many IDEs and Code Editors integrate Vi/Vim functionality, and it’s very easy to use directly on the Console. For example, on Mac you can use Vim directly in Terminal or with an application like MacVim.
See more: https://www.vim.org/download.php
I haven't taken the OS class yet, so I'm not sure how familiar we need to be for that, but for up through the second term of the 1-year track you just need very basic controls. mkdir, mv, cd, cp , ls, rm are the ones I use often when I'm feeling lazy to open up fileZilla.
You can use whatever IDE or text editors your want. The server has vim which you can use, but not required - should know how to use it though just in case you need to edit something on the fly in the server. C++ is covered in the intro class. C in data struct. HTML5/CSS + JavaScript + PHP + MySQL are covered in web dev, so you'll probably need to setup a local host server like XAMPP Apache and MySQL to run things locally. I use bracket or sublime for web dev class. And I use XCode if I'm on my mac, and CodeBlock or Eclipse when I'm windows for programming in C/C++. For assembly, you will need to install visual studio ( you also need to be in windows OS for this class - so if you're in a mac, just run a virtual windows 7, or dual boot). You don't actually have to use visual studio for coding though, just for compiling and debugging. I write my assembly codes using notepad++ as it has highlighting without having to configure anything. (yes, I use a lot of apps... I need a change of scenery every now and then)
Submission of coding assignments require testing on the OSU server first, but that's pretty simple. All of these are explained in the first week of the classes. Even installation of IDEs are covered with walkthrus.
This book has been recommended a couple times around programming subs. There's a free course, but I liked the book better - Learning How to Learn on Coursera. Insanely high return for small investment of time.
Skimming is a good idea, but only to build a mental framework of what you'll be learning. In other words, skim the readings (read the section headers, look at the diagrams, read the practice questions at the end of the reading). Skim forums to see what difficulties students are running in to. Skim the assignments. At this point, you really haven't done much work... but you'll have a mental framework in place for properly learning the material.
Most companies don't care about your grades, but the material you learn in a CS program is so incredibly valuable. I'm just pointing this out, because your example is exactly what you shouldn't do.
I graduated with a ~3.8 GPA and wish I was more diligent in my studies.
This is a great post. Thank you!
Regarding the windows calculator, I did this list awhile back. Hope it helps:
This is a cross-post from another thread seen here
With the CS271 midterm coming up and the godsend that is Windows Calculator for converting between binary, hex and decimal it's pretty awesome. However, the windows calculator doesn't have any unofficial support for signed binary. But there's a work around!
You simply need to change DWORD -> WORD for 16 bits, and WORD -> BYTE for 8 bits, then put in the binary number and now you have the signed version.
Also, it works for analyzing what number would be in a 8, 16 bit or 32 bit register.
For example, if we have the question:
The following instructions will set the Sign flag:
mov al,0FEh
sub al,2
We know the al is a 8 bit register, so if you plug in 0FEH
and have the setting to BYTE
, you'll see you will get 0FEH == -2.
So the answer here is yes, the sign flag would be set. However, if you have the setting to WORD
or DWORD OFEH == 254
. And the sign flag would not be set.
I hope this helps someone :)
I apologize that I don't know how to recreate this on a Mac, but this calculator can be a possible solution
You have about a month in between summer and fall quarter. I recommend you make use of it by reading The C Programming Language. It is probably the most influential book in Computer Science history (as short as it's been). It's short, concise, and well-written. One of the authors created the C language. Both contributed to the development of Unix.
One month is probably not enough to finish CS50. Unless you work on it full time that entire month.
You can code all your assignments in python. Abdul bari videos + grokking algorithms + cormen should help you with understanding the pseudo code.
If you have amazon prime, this book is in python and free for prime reading. https://www.amazon.in/Data-Structure-Algorithmic-Thinking-Python/dp/8192107590/ref=sr_1_3?dchild=1&keywords=data+structures+python&qid=1592934225&sr=8-3
Generally, this is used for interview preparation if you want to opt for python as language of choice.
3.4 - Create a stack class (with all normal stack operations). Create a queue class using two stacks. You can than implement the enqueue / dequeue operations using the "in-stack" and "out-stack" like in the book.
It can be alittle confusing to go from the java solutions to python solutions, but just remember that python is not as verbose as java. And like /u/electricave21 said, check the CTCI repo for python solutions.
I also personally found Elements of programming Interviews in Python to be very helpful.
Im currently in the class now. I agree with the previous posts in that reviewing C is a great idea. The whole class is entirely in C. I also recommend to get a supplemental book on C. The book in the link below really saved my ass.
Clean Code and Cleaner Code are differenr books, right?
Clean Code: A Handbook of Agile Software Craftsmanship
The Clean Coder: A Code of Conduct for Professional Programmers
On Amazon, both seem to be sharing the reviews. I dont think the Cleaner Code isn't a newer version or Clean Code. I just want to make sure the recommend book (published 2008) is the one that is being recommend.
315 pages of primary material plus appendices and an index for a total page count of 431. The book can be divided into three parts: the first describes the principles of writing clean, maintainable code in depth; the second is a series of three case studies; the third is a chapter of code smells and heuristics which summarize the advice of the book. The first and third section are fairly easy reading, however the case studies are a bit more intense. Overall this is a readable book that won't be too trying on anyone's brain; this most definitely is not CSLR's Introduction to Algorithms.
So I learned about the book after seeing this video on reddit:
https://www.youtube.com/watch?v=LGkkyKZVzug
Around the same time I read Code: The Hidden Language of Computer Hardware and Software which is also fantastic. It's just a read - you don't have to do any projects.
Is Rosen's the 225 book? If so I do not have that anymore, and I don't know what would be helpful from it. Algorithms uses Cormen, Leiserson, Rivest, Stein called CLRS Introduction to Algorithms, if you could acquire that somewhere, there is a ton of interesting information in that.
Khan Academy is great. I've also heard good things about the Coursera Algorithms courses (and I think specifically the Stanford Algorithms: Design and Analysis one), but those are a little bit more of a time commitment obviously. The book for the class during Winter 2015 quarter was 'Introduction to Algorithms', so another idea would be to get a head start on the first 2-3 chapters of that (assuming it's still used).
I bought this Acer Chromebook. https://www.amazon.com/gp/product/B01K5EBCES/
It has been perfect so far. I am in 290 and 261 and no issues. It is a little slow running a full fledged IDE, eclipse but command line stuff it has been smooth. I have Ubuntu installed and run that mostly. Unless you really want a personal laptop that is top-o-the-line I wouldn't drop the cash this thing is perfect for this program. Added bonus, you get some great experience with Linux
For coding best practices : Maybe you don't need to follow this to the T but it's helpful overall.
For when you are stuck / architecting your program:
Explain your code/talk through exactly what you are doing to a rubber duck or willing participant. A lot of times saying it out loud and explaining your code will help you find any holes to think about/fix.
I've used a chromebook for most of the program. I didn't put linux on it, but instead created a workspace on cloud9 which is a web based IDE that runs on linux. I can see some issues with some classes like webdev, mobile/cloud, assembly, and probably a few more. I just got this one for my wife at 185. I like the screen and speakers a lot. https://www.amazon.com/gp/product/B01I0560MS
Oh, in that case, I picked up one of these as a backup laptop for around $150 awhile ago refurbished on amazon and put a 64gb sd card in. I tried a chromebook out like a year ago and installed linux but sold it after a few weeks. It was really limited in what it could do and the whole linux thing was a hassle because I wasn't used to it.
https://www.amazon.com/gp/product/B00NY29UIO/ref=oh_aui_detailpage_o09_s00?ie=UTF8&th=1
As an intro to programming, I read this book: https://www.amazon.com/Hello-World-Computer-Programming-Beginners/dp/1617290920 and it was easy to read. Yes, it says it is for kids. It's in Python, which won't necessarily help you learn C++ but it will make the concepts taught just that much easier. Plus you can see if you really like programming before dropping a bunch of money on admission and classes. I found this book at my local library.
I read this book: https://www.amazon.com/Hello-World-Computer-Programming-Beginners/dp/1617290920 and yes, it says it is for kids, but I found it to be really easy to understand and written for people who have no programming experience (the college intro to CS books including the ones I was taught in this program) say they aren't written for beginners.
The book "Practical Malware Analysis" has a ton of labs and is pretty great, as is "The Practice of network Security Monitoring". Basically have my current job from stuff I learned in those two books.
When I took it, we used the sample "Sakila" database for a lot, it is part of the MySQL tutorials here: https://dev.mysql.com/doc/sakila/en/.
Also a strong book on database design is: Check this out: Database Systems: Design, Implementation, and Management (with Prem... https://www.amazon.com/dp/1111969604/ref=cm_sw_r_sms_awdb_DxCOyb8P48Q7D )
It's a text at many colleges - but covers stuff like ERDs in great detail. Handy reference. Don't buy a new one though, $$$. Find a used one or you can rent e-book for like 30 bucks / semester ( may not be most recent version but that's ok)
I used a great ebook on amazon that I'll link below that was a little outdated and I couldnt use the majority of their techniques for my game for a variety of reasons, but it gave a great outline for the architecture. I just rented it for a while.
Also, I want to start another project that is well architectured (based on the mistakes of this one) and maybe uses react, redux, nodejs, mongodb, socket io. (My goal is to get great at Es6 and React to land a job) If you have an idea, like that stack, and want to team up, I'd be down. PM me if you want to build something together.
Just found react game kit which might be something to consider using: https://github.com/FormidableLabs/react-game-kit
Here's the book that inspired my design: https://www.amazon.com/dp/143024710X/ref=cm_sw_r_cp_awdb_a90PybWB4THMB
My math skills sucked when I started. Definitely go though a book on math if you can.
There are two books I recommend. One book I found recently and plan to go through once I am done with the program (I am too busy now), just because I want to solidify my math skills is: Mastering Technical Mathematics
I found the book randomly and after skimming through a few pages knew it was a great book. It starts out with basic discrete mathematics concepts like counting and then goes all the way up to some calculus ideas.
The other book I reccomend is one I went through called Practical Algebra: A Self-Teaching Guide, Second Edition. It focuses more on algebra obviously but Algebra is actually the hardest part of CS 225 and CS325!
I found this book really helpful! It isn't solely about pointers, but rather how to solve problems in C++. However, it has a chapter on pointers and dynamic memory that I found really useful. Definitely worth a gander.
Read the book. CS 161/162 uses 'Starting out with Early Objects', better known as 'The Gaddis book.'
https://www.amazon.com/Starting-Out-Early-Objects-9th/dp/0134400240
They've been using 8th ed up to this point, but I read somewhere they may be switching to 9th. 8th you can find online for free, just google around a bit. All in all, the concepts are the same.
I have a bunch of therapy related things around my desk because of this ranging from lacrosse balls to this amazing thing.
I have a very similar product called the theracane, and I swear by it. Does wonders for those otherwise-hard-to-massage-yourself shoulder pains. Not sure I'd take it to work, though. It does look very NSFW...
https://www.amazon.com/Thera-Cane-JMAS5000-Massager/dp/B000PRMCJU
It's been a while since I've taken 161, but when I did, this was the book: https://www.amazon.com/Starting-Out-Early-Objects-8th/dp/013336092X
Back then 161 and 165 were using the same book. We made it through most of the book in 161 and 162 and my understanding is that 165 is the same story, just twice as fast, so looking at the book might help you decide as well!
I like John Ducket's books and found his JavaScript book helpful for the class. JavaScript and JQuery: Interactive Front-End Web Development https://www.amazon.com/dp/1118531647/ref=cm_sw_r_cp_api_BsYGxbSXMM8D9
Lots of pictures, text is short and concise - but not the deepest dive in the language
Have you checked out The Algorithm Design manual by Skiena? That's the one I keep seeing recommended for interview preparation. It's easily findable online and can buy it new/used for $50/$80
I bought a Casio fx-115ES but never used it - the Windows calculator was so much easier to use. Also the Casio is limited to 16 binary bits in the display and the Windows calc goes to 64 bits (at least). Still, can't go wrong for $14
I used this one in addition to the Windows calculator. The Windows calc is the easiest way to convert between binary, hex, and dec, though.
I really really hated that class. I never felt confident in the material and I really thought the coursebook sucked. Near the end of the course, I read on this subreddit someone recommending Mastering Algorithms with C by Kyle Loudon. You may want to check it out. I wish I had that as a resource when I was taking it.
http://www.ratemyprofessors.com/ShowRatings.jsp?tid=1856913
This concerns me...Any info you can give me would be very helpful. Like, are tests hard/tricky? Assignments extremely hard?
For 290 I bought these books: http://www.amazon.com/HTML-CSS-Design-Build-Websites/dp/1118008189
If you could tell me some of the concepts you studied for 340, I will buy books on that too. Sounds like it will be another OSU "Teach yourself" quarter.
261 doesn't have a traditional book - all the reading material is posted as weekly PDFs. I did buy this prior to taking the class, and have been using it to review data structures and get more of an intro to algorithms, and it's been pretty nice as a reinforcer for what I already learned in 261.