|
|
(22 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= | + | =Getting Started Pages= |
| + | * [[Linux and CS Systems - Getting Started]] |
| + | * [[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]] |
| | | |
− | ==Python== | + | =Practice Programming Contest Problems= |
− | Getting started with Python and this bootcamp.
| + | These are problems with precisely defined correct output, so that you can submit your program to make sure it is 100% correct. |
− | # 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==
| + | * [http://www.hackerrank.com/ Hacker Rank] - very user-friendly, different programming languages available, different categories of questions |
| + | * [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. |
| | | |
− | =Algorithms and Data Structures= | + | = 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. |
| | | |
− | ==Data Structures==
| + | * https://try.github.io/ |
− | | + | * https://learngitbranching.js.org/ |
− | ==Algorithms==
| + | * https://www.atlassian.com/git |
− | | |
− | =Using Linux, CS Systems=
| |
− | ==Reading==
| |
− | To begin with, read through - [http://www.ee.surrey.ac.uk/Teaching/Unix/ Linux Tutorial]
| |
− | | |
− | ==System Setup==
| |
− | Next, you need to have a Linux system that you can use.
| |
− | | |
− | ===ISU CS Account===
| |
− | 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]]).
| |
− | | |
− | ===Linux on Your Computer===
| |
− | 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].
| |
− | | |
− | ====Mac OS X====
| |
− | 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.
| |
− | | |
− | ==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>
| |
− | | |
− | ===Text Editors, Part 1===
| |
− | One thing programmers need to do is edit text files. The text files could be your programs, or they could be data files. There are many different text editors that are normally installed on Linux systems. The most popular are - vim, emacs, nano.
| |
− | | |
− | nano is among the easiest text editors to use, so let's get you started using nano. You first need to be logged into Linux and open a terminal. Type the following
| |
− | <pre>
| |
− | nano hello.txt
| |
− | </pre>
| |
− | You will now be running the nano editor and editing a file named hello.txt. Note that the interface is '''completely text-based'''. There is nothing for you to click on. Instead of clicking on menus, you have control codes that you can type to save, close, etc. The bottom of the screen lists the control codes that you can use. Each control code is typed by holding down the control key on your keyboard and then pressing a letter.
| |
− | | |
− | For example, hold down control and press x to Exit nano. You can type nano hello.txt again to open the nano editor again.
| |
− | | |
− | Now type some text, for example "Hello World". You can save your file by holding down control and pressing o. When you do this, nano prompts you to ask what the name of the file should be; you can leave it alone as hello.txt and press enter. Your file is now saved! You can type more into your hello.txt file if you wish. Use the arrow keys on your keyboard to move around inside of your text file. When you are done editing, use control-o to write out (save) your file, and then use control-x to exit nano.
| |
− |
| |
− | ===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>
| |