Difference between revisions of "Beginning Programming"

From Computer Science
Jump to: navigation, search
(Created page with "== Computing majors == If you are interested in computing, at ISU your options are Computer Science, Information Technology, or Management Information Systems. There is a fair...")
 
(Helpful Resources)
 
(6 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
== Computing majors ==
 
== Computing majors ==
If you are interested in computing, at ISU your options are Computer Science, Information Technology, or Management Information Systems. 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. 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, or MIS would best suit you.
+
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 ==
 
== 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.
 
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 starts with lower-level programming before higher-level programming. After finishing at ISU you should be very familiar with unix/linux, and be a decent programmer in C, C++, javascript, php, and sql. You should be familiar with a number of other programming languages (Python, Java, a few others).
+
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 ==
 
== Getting Ready ==
Line 12: Line 12:
 
* 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://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.
 
* 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.
* [https://www.youtube.com/playlist?list=PLXFP6J47Bp0dB2rRysTTkVVr4F_tDBnPR CS 151] - check out Jeff Kinne's video lectures from CS 151, the first course in our major.
+
* [https://www.youtube.com/playlist?list=PLCFNfZsc2MIByWxTX2Zjg0wJpk1YXbcQ8 CS 151] - check out Jeff Kinne's video lectures from CS 151, the first course in our major.
 
* [https://www.youtube.com/playlist?list=PLXFP6J47Bp0fxKk5q6V_K2_3DkPIdGmMf AI] - video playlist from high school summer honors course at ISU from 2017.
 
* [https://www.youtube.com/playlist?list=PLXFP6J47Bp0fxKk5q6V_K2_3DkPIdGmMf 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.
 
* Get a copy of Introduction to Algorithms (any edition) and start perusing it.
 
* http://appinventor.mit.edu/explore/ - make apps for Android.
 
* http://appinventor.mit.edu/explore/ - make apps for Android.
* See our [http://cs.indstate.edu/info/getting-started.html Getting Started] page (including links at bottom of that page).
+
* See our [[Help and Getting Started]] page and [http://cs.indstate.edu/info/learn.html Learn].
* Be a nerd or geek, and watch youtube videos about science and technology. For example, It's [https://www.youtube.com/user/itsokaytobesmart Okay to be Smart] or [https://www.youtube.com/user/physicswoman Physics Girl]
+
* 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.
* 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 -
 
* Some key ideas in CS and examples -
 
** Algorithm - linear search vs. binary search, selection sort vs. merge sort, euclid's algorithm vs. trial division
 
** Algorithm - linear search vs. binary search, selection sort vs. merge sort, euclid's algorithm vs. trial division
Line 36: Line 35:
 
** Board game - tic tac toe, connect 4, chess, you name it
 
** Board game - tic tac toe, connect 4, chess, you name it
 
** Calculator - with usual operations but also with your own cutsom ones
 
** Calculator - with usual operations but also with your own cutsom ones
 +
 +
== Other Helpful Resources ==
 +
* [https://developer.android.com/ Make Android applications]
 +
* [https://developer.apple.com/ Make iOS applications]
 +
* [https://www.jetbrains.com/student Development tools for students]

Latest revision as of 11:49, 29 July 2020

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

Other Helpful Resources