Beginning Programming: Difference between revisions

From Computer Science at Indiana State University
Jump to navigation Jump to search
 
(2 intermediate revisions by the same user not shown)
Line 11: Line 11:


* [[Programming Practice]]
* [[Programming Practice]]
* 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.
* [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.
* 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 [[Help and Getting Started]] page and [http://cs.indstate.edu/info/learn.html Learn].
* See our [[Help and Getting Started]] page.
* 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 or VMWare 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
** 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]
** Proof - there are infinitely many primes, the halting problem is uncomputable, the square root of 2 is irrational, formula for 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
** 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
** Abstraction - operating system virtual memory, RAID, object-oriented programming, file system, any API, any programming language
Line 36: Line 32:
** Drawing shapes - regular polygons, stars, fractals
** Drawing shapes - regular polygons, stars, fractals
** 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 custom ones


== Other Helpful Resources ==
== Other Helpful Resources ==

Latest revision as of 19:45, 4 June 2026

Computing majors

If you are interested in computing, at ISU your options are Computer Science, Information Technology, Cyber & Security Studies, Computer and Electrical Engineering Technology. 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) CSS at ISU is in the School of Criminology and has a large focus in criminology / social science, (d) CEET more involves the hardware / circuits. 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, CSS, or CEET 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.

  • Programming Practice
  • http://code.org - go do some of their tutorials. These are mostly aimed at middle-school aged students, but is great experience and fun.
  • 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.
  • 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 or VMWare 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, formula for 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 custom ones

Other Helpful Resources