Difference between revisions of "Programming and CS - Getting Started"

From Computer Science
Jump to: navigation, search
(Try it Out)
(Recommended Computer)
 
(30 intermediate revisions by 2 users not shown)
Line 1: Line 1:
We are developing bootcamps on the most important topics and skills that are used throughout our courses.  These can be used by incoming undergraduate students to get a head start, incoming graduate students to review, or current students to refresh/remediate.
+
We are developing Getting Started pages on the most important topics and skills that are used throughout our courses.  These can be used by incoming undergraduate students to get a head start, incoming graduate students to review, or current students to refresh/remediate.
  
=Programming Bootcamps=
+
=Recommended Computer=
 +
Much of what we do in CS courses can work in Windows, Mac OS, Linux, or Chrome.  There will be an odd thing or two still that may not work in Chrome. 
  
==Python==
+
All other things being equal, getting a computer that is not "bottom of the barrel" would be good. Chromebooks in the $400+ range should generally work reasonably well. For Windows/Linux/Mac OS laptops, you should be looking for 8GB RAM bare minimum, preferred 16GB if possible, and avoid getting a laptop with an i3 or Celeron processor; this roughly corresponds to the $500+ price range.  You can potentially get anything to work, but will have an easier time with a medium-range computer than a low-end system.
Getting started with Python and this bootcamp.
 
# Follow along this tutorial -
 
# Work on solving these problems - https://www.hackerrank.com/domains/python
 
# Get Python installed on your computer -
 
# If you are a current or incoming ISU student, or an ISU alumni, sign up for the ISU CS Mattermost, go there to get help.
 
  
==C==
+
For laptops, we recommend getting at least a 3 year warranty (since they tend to break if you actually do transport them around).  Also, we recommend getting an option that has a long battery life (rule of thumb - battery life will be half of its original rating after 1-2 years of regular daily use).
  
=Algorithms and Data Structures=
+
You should also have the ability to install programs on the system and have a normally reliable internet connection at home if possible.
  
==Data Structures==
+
If you have a particular system in mind for purchase that you would like an opinion on, please feel free to contact one of the CS faculty members.
  
==Algorithms==
+
University requirements are listed [https://www.indstate.edu/online/resources/students/technology-requirements here] and are similar to that described above.
  
=Using Linux, CS Systems=
+
=Getting Started Pages=
==Reading==
+
* [[Linux and CS Systems - Getting Started]]
To begin with, read through - [http://www.ee.surrey.ac.uk/Teaching/Unix/ Linux Tutorial]
+
* [[Handin|Handin - The CS Assignment Handin System]]
 +
* [[Python Programming - Getting Started]]
 +
* [[C Programming - Getting Started]]
 +
* [[R Programming - Getting Started]]
 +
* [[Algorithms and Data Structures - Getting Started]]
 +
* [[Gitlab - Getting Started]]
  
==System Setup==
+
=Practice Programming Contest Problems=
Next, you need to have a Linux system that you can use.
+
These are problems with precisely defined correct output, so that you can submit your program to make sure it is 100% correct.
  
===ISU CS Account===
+
* [http://www.hackerrank.com/ Hacker Rank] - very user-friendly, different programming languages available, different categories of questions
If you are a student in a CS course at ISU you will be given an account on the CS linux systems (see [[CS Accounts and CS Lab Computers]]).
+
* [https://open.kattis.com/problems Practice problems] at open.kattis.com (sort by difficulty or solved % to try the easiest ones first)
 +
* [http://cs.indstate.edu/acm/contests.html ISU ACM Club's Contest Problem page]
 +
* [http://cs.indstate.edu/~jkinne/Cpractice/ A few simple practice problems], with solutions to some on the CS server. See the .txt files.
  
===Linux on Your Computer===
+
= Source Control =
You can also download and install [https://www.virtualbox.org/wiki/Downloads VirtualBox] on your computer, download a Linux install image (e.g., [https://www.ubuntu.com/download/desktop Ubuntu Linux]), and then [https://www.instructables.com/id/How-to-install-Linux-on-your-Windows/ install Linux into your virtual box].
+
It is a good idea to use source control when developing software, and is necessary when you are developing in a group or professionally. When working on assignments or course projects it is the best practice to use a private repository so other students cannot copy your work. Git is the industry standard for source control. Here are some resources to use to learn Git.
  
====Mac OS X====
+
* https://try.github.io/
You can also use a Mac OS X computer - most (but not all) commands are the same on Linux and Mac OS X.  On Mac OS X, to get to the terminal you click on Finder, then Applications, then Utilities, then Terminal.
+
* https://learngitbranching.js.org/
 
+
* https://www.atlassian.com/git
==Try it Out==
 
Once you have your Linux system to try out, open up the terminal (also called the shell, or command prompt), and you are ready to try out some commands.  '''Note that all commands in Linux are case-sensitive'''.
 
===System Information, Part 1===
 
The following are some commands to print information about the system. 
 
* uptime - how long since last system reboot
 
* df - information about disk free space
 
* whomi - which user is currently logged in on the terminal
 
* hostname - what computer are you currently running commands on
 
* pwd - which directory are you inside of
 
* clear - clear the terminal screen
 
Here is an example session from running on the CS server using all of these commands.
 
<pre>
 
cs299@cs:~> uptime
 
09:00:45 up 56 days, 19:35,  3 users,  load average: 0.32, 0.31, 0.32
 
cs299@cs:~> df -h
 
Filesystem      Size  Used Avail Use% Mounted on
 
/dev/root      1016G  229G  778G  23% /
 
devtmpfs        498G    0  498G  0% /dev
 
tmpfs            32M  2.3M  30M  8% /run
 
tmpfs          498G  8.0K  498G  1% /dev/shm
 
cgroup_root    8.0M    0  8.0M  0% /sys/fs/cgroup
 
/dev/sda2      127G  22G  105G  17% /usr
 
/dev/sda3      127G  8.3G  118G  7% /var
 
/dev/sda4        64G  13G  51G  20% /tmp
 
/dev/sda5        10T  2.8T  7.2T  28% /u1
 
/dev/sda6      4.0T  685G  3.3T  18% /net
 
/dev/sda7        18T  6.9T  11T  40% /store
 
cs299@cs:~> whoami
 
cs299
 
cs299@cs:~> hostname
 
cs.indstate.edu
 
cs299@cs:~> pwd
 
/u1/class/cs299
 
</pre>
 
 
 
===Files and Directories, Part 1===
 
With the terminal you can create, copy, move, and delete files and directories.  The following are the most important commands to do this.
 
* cd - change directory
 
* mkdir - make a new directory
 
* ls - list directory contents
 
* cp - copy files
 
* rm - remove files (be careful, there is no recycle bin or trash - once you delete, it's gone)
 
* rmdir - remove directory
 
* nano - simple text editor
 
And here is a transcript of the use of these commands on the CS server.
 
<pre>
 
cs299@cs:~> pwd
 
/u1/class/cs299
 
cs299@cs:~> mkdir new-dir1
 
cs299@cs:~> mkdir new-dir2
 
cs299@cs:~> nano hello.txt
 
cs299@cs:~> ls
 
bin/  hello.txt  new-dir1/  new-dir2/  proto/
 
cs299@cs:~> cp hello.txt new-dir1
 
cs299@cs:~> cp hello.txt new-dir2/hello2.txt
 
cs299@cs:~> ls new-dir1
 
hello.txt
 
cs299@cs:~> ls new-dir2
 
hello2.txt
 
cs299@cs:~> mv new-dir2 new-dir3
 
cs299@cs:~> ls
 
bin/ hello.txt  new-dir1/  new-dir3/  proto/
 
cs299@cs:~> rm hello.txt
 
cs299@cs:~> ls
 
bin/  new-dir1/  new-dir3/  proto/
 
cs299@cs:~> rmdir new-dir3
 
rmdir: failed to remove 'new-dir3': Directory not empty
 
cs299@cs:~> rm new-dir3/hello2.txt
 
cs299@cs:~> rmdir new-dir3
 
cs299@cs:~> ls
 
bin/  new-dir1/  proto/
 
</pre>
 

Latest revision as of 20:54, 23 July 2023

We are developing Getting Started pages on the most important topics and skills that are used throughout our courses. These can be used by incoming undergraduate students to get a head start, incoming graduate students to review, or current students to refresh/remediate.

Recommended Computer

Much of what we do in CS courses can work in Windows, Mac OS, Linux, or Chrome. There will be an odd thing or two still that may not work in Chrome.

All other things being equal, getting a computer that is not "bottom of the barrel" would be good. Chromebooks in the $400+ range should generally work reasonably well. For Windows/Linux/Mac OS laptops, you should be looking for 8GB RAM bare minimum, preferred 16GB if possible, and avoid getting a laptop with an i3 or Celeron processor; this roughly corresponds to the $500+ price range. You can potentially get anything to work, but will have an easier time with a medium-range computer than a low-end system.

For laptops, we recommend getting at least a 3 year warranty (since they tend to break if you actually do transport them around). Also, we recommend getting an option that has a long battery life (rule of thumb - battery life will be half of its original rating after 1-2 years of regular daily use).

You should also have the ability to install programs on the system and have a normally reliable internet connection at home if possible.

If you have a particular system in mind for purchase that you would like an opinion on, please feel free to contact one of the CS faculty members.

University requirements are listed here and are similar to that described above.

Getting Started Pages

Practice Programming Contest Problems

These are problems with precisely defined correct output, so that you can submit your program to make sure it is 100% correct.

Source Control

It is a good idea to use source control when developing software, and is necessary when you are developing in a group or professionally. When working on assignments or course projects it is the best practice to use a private repository so other students cannot copy your work. Git is the industry standard for source control. Here are some resources to use to learn Git.