Beginning Programming
Computing majors
If you are interested in computing, at ISU your options are Computer Science, Information Technology, Management Information Systems, Cyber & Security Studies. There is a fair amount of overlap, but roughly - (a) CS is mostly about making software and making it efficient, (b) IT is about managing computer systems and networks, (c) MIS is about managing both computer systems and personnel, (d) CSS at ISU is in the School of Criminology and has a large focus in criminology / social science. The most common job titles for those graduating from CS are - programmer/developer/software engineer of various kinds (web, database, network, systems, ...). If you do not want to be a programmer, consider whether CS, IT, MIS, or CSS would best suit you.
CS at ISU
Most programs that are called "Computer Science" have a common core in common so that you should get a similar experience at most universities that offer CS. After finishing any CS program (including at ISU), you should be a decent programmer in a few different programming languages, can use the right data structures and algorithms for different problems, understand precisely how modern software systems (e.g., operating systems, web servers, 3d graphics) work and are programmed, and have completed a few nicely sized software projects.
But each CS department has its own personality. CS at ISU is more unix-oriented than Windows-oriented, and gets you experience with both low-level and high-level programming. After finishing at ISU you should be very familiar with unix/linux, and be a decent programmer in Python, C, javascript, php, and sql. You should be familiar with a number of other programming languages (Java, a few others).
Getting Ready
If you have done some work in computing before and want to do something extra to get ready for CS at ISU, here are a few things you can do.
- http://code.org - go do some of their tutorials. These are mostly aimed at middle-school aged students, but is great experience and fun.
- http://hackerrank.com - create an account and start doing basic programming problems. This site is great because your answer won't be accepted until it is 100% correct.
- CS 151 - check out Jeff Kinne's video lectures from CS 151, the first course in our major.
- AI - video playlist from high school summer honors course at ISU from 2017.
- Get a copy of Introduction to Algorithms (any edition) and start perusing it.
- http://appinventor.mit.edu/explore/ - make apps for Android.
- See our Help and Getting Started page and Learn.
- Install linux on one of your home computers (Ubuntu and Mint are pretty easy to use). Note - do it on a computer that doesn't have any important data on it... You can also do this by first installing VirtualBox in your current operating system and then install linux inside of that.
- Some key ideas in CS and examples -
- Algorithm - linear search vs. binary search, selection sort vs. merge sort, euclid's algorithm vs. trial division
- Proof - there are infinitely many primes, the halting problem is uncomputable, the square root of 2 is irrational, the sum of an arithmetic series [1 + 2 + ... + n = n*(n+1)/2]
- Data speeds - tape vs. hard disk drive vs. RAM vs. CPU cache vs. CPU registers
- Abstraction - operating system virtual memory, RAID, object-oriented programming, file system, any API, any programming language
- Assembly language - little man computer (simulator)
- Some classic beginning programming projects -
- Encryption - Caesar cipher, substitution cipher, Vigenere, RSA, and others
- Letter and word frequency - used in breaking substitution cipher, used in AI
- Chatbot - responds in a reasonable way to many text, see Eliza ("the doctor")
- Choose your adventure game
- 2d maze/dungeon crawler
- Arithmetic quiz and tables - for kids learning their math facts
- Paint
- Drawing shapes - regular polygons, stars, fractals
- Board game - tic tac toe, connect 4, chess, you name it
- Calculator - with usual operations but also with your own cutsom ones