Linux and CS Systems - Getting Started and Undergraduate Advising: Difference between pages

From Computer Science at Indiana State University
(Difference between pages)
Jump to navigation Jump to search
 
 
Line 1: Line 1:
This page is meant to help a new student in a CS course at ISU to get familiar with using Linux (in particular using the text-based terminal to interact with the system).
The undergraduate programs are listed in the catalog and linked from the CS homepage. The present page contains advice not contained there.  Check the [[CS Programs]] page and catalog information first, and then come back here.


=Getting Started=
== Who to Get Advice From ==
# '''Read''' - [https://ubuntu.com/tutorials/command-line-for-beginners#1-overview Ubuntu Linux Command Line Tutorial] or [http://www.ee.surrey.ac.uk/Teaching/Unix/ Linux Tutorial] - this gives you some background and introduces you to some of the terms that we use. After reading through the tutorial you have a better chance of being able to follow along the rest of the steps in this Getting Started.
Each student has a professional advisor who approves your selection of courses and gives you an advising pin. You also will have a faculty advisor to advise you on your major courses. Students who do not yet have a CS faculty member as an advisor should feel free to contact the CS advisors to get advice and make sure you are taking the right courses.
# '''System Setup''' - [[Linux - System Setup]] - to get your computer setup (programs installed, etc.).
# '''Using the Terminal'''
## [[Linux Terminal - Files and Directories and Getting Around]]
## [[Linux Terminal - System Information]]
## [[Linux Terminal - Text Editors]]
## [[Using Linux - Large Text Files]]
## [[Linux Terminal - More Commands to Know]]


=Common Mistakes=
The CS faculty who currently serve as advisors for undergraduate students are  
* When logging in remotely to the CS server, when you are typing your password you might not see anything printed on your screen while you type.  That is a security feature so that someone watching your screen would not know how many characters are in your password.  Just finish typing your password and type enter when finished.
[[ISU CS People|Jeff Kinne]]. Students can also get unofficial advice from other CS faculty and other students.
* Note that all commands and file names in Linux are '''case sensitive'''. hello.txt is different than Hello.txt.  The copy command is cp, Cp would not work, and neither would cP or CP.
* The characters _ and - are different, and having a space in a file name is different than not having one ("hello world.txt" is different than "helloworld.txt").
* For Linux directories and filenames, the "/" character is used to separate directories.  On Windows, the "\" character is used instead.  If you typed <pre>cd /home/cs151</pre> then this changes the directory to the cs151 user's home directory.  If you instead typed <pre>cd \home\cs151</pre> you would get an error.
* The "top" or "highest level" of the Linux file system is the directory / and this is comparable to the "C:\" that was traditionally the top of the file system in Windows.  In Windows there can be multiple drives (so D:\, E:\, etc.), but in Linux '''everything''' is underneath / (including additional drives, they will show up at a certain location under /).
* On Linux, ~ is a shortcut for your home directory.  User jkinne@isuad.indstate.edu's home directory is in /home/jkinne@isuad.indstate.edu, so if this user is logged in and types <pre>cd ~</pre> then this means to change directories to /home/jkinne@isuad.indstate.edu/.  If user jeff types <pre>cd ~</pre> then this means to change directories to jeff's home directory (which happens to be /home/jeff/).
* Not all sequences of commands are ''idempotent'' - this is a technical term that means that the sequence of commands gives the same results if executed more than once. For example, executing <code>echo "hello world!" >> hello.txt</code> once creates a file hello.txt that has one line in it, but executing again makes the file have two lines. When you see a sequence of commands to run to complete some task (e.g., from an online tutorial) be careful to execute one command after the other, all the way through, stopping after each to make sure you know what that step was supposed to do.
* Sometimes the precise syntax of commands might depend on which shell program you are using. bash is the default shell program on the CS server, but  zsh is commonly used instead.  You can see which shell you are running by executing the <code>ps</code> command and seeing which one is in the printed output from that command.  For example, the command for displaying your resource limits is <code>ulimit -a</code> in bash and zsh, but is <code>limit</code> in tcsh. When looking up how to do things online, it is good to include your shell in the search terms (e.g., search for - bash get resource limits - rather than just - get resource limits).


=More Reading=
== Concentrations ==
Read through another tutorial about Linux. Some options include the follow.
See the description of the CS major in the Undergraduate Catalog (https://catalog.indstate.edu/index.php) and for descriptions of the concentrations. Some additional notes on the concentrations...
* [http://www.linuxcommand.org/ Linux Console Tutorial]
* '''Calculus''' - computing science and data science require calculus, while information science does not. If you choose one of the concentrations that requires calculus, take a math course each semester until you are through Math 132 Calculus II so that you will have that finished as a prereq when you need it.
* [http://www.reallylinux.com/ Information for Beginning Linux Users]
* '''Time to complete''' - below on this page has programs of study and information about course sequencing.  You will see that the computing science and data science concentrations have a longer "prereq chain" - sequence of courses that have to be taken one before the next.  The information science concentration has more lower level courses and can be completed more quickly. If you are a transfer student without the first few courses in the major done already, information science would probably have you finish sooner.
* [http://cs.indstate.edu/~sbaker/faq/QuickRefCard.pdf Unix/Linux Quick Reference Card]
* '''Courses outside your concentration''' - you should feel free to take courses outside your concentration as long as they fit in your schedule and you have the prereqs. You need to complete the requirements for one of the concentrations, but that does not prevent you from taking additional CS courses. In general, the wider exposure you get in your coursework the better.


=Self Test=
== Other Courses and General Advice ==
Note: a practice quiz over linux commands and the terminal is here - https://indstate.instructure.com/courses/12565/quizzes/244584
'''When Offered'''  Most classes are only offered once per year. So, for example, you cannot plan to take CS 470 in the spring. Only the beginning CS courses are offered every semester, and certain courses are only offered once every two years or as needed. See [[Courses]] for information on when courses are normally offered.


Here we give small tasks for you to complete.  These are numbered so that we can refer to them.  For each you would need to be logged into one of the CS systems (remotely logged into the CS server or using one of the CS lab computers).
'''Breadth Exposure'''  You must take all the courses from one of the concentrations. For the broadest exposure to computer science, we recommend taking a few courses from other concentrations as well.


''Linux.1'' Log in to the CS server, create a directory named aboutMe in your home directory, and create a text file name.txt.  In the name.txt file, give your full name.
'''Non-CS Courses'''   Courses that are not required but which are useful and recommended: Math 231 Calculus III, Math 252 Programming in Mathematics, Math 313 Elementary Linear Algebra, Math 341 Probability and Statistics, Physics (Phys 105 and 106, or Phys 115 and 116), Electronics (ECT 160 Electronic Fundamentals, ECT 173 Fundamentals of Information Technology, ECT 231 Digital Computer Logic, ECT 232 Digital Computer Circuits), an economics course. See the undergraduate catalog of courses for information on particular courses.


''Linux.2'' In your aboutMe directory, create a file courses.txt and list which CS courses you are currently taking or plan to take in the upcoming term.
'''Foundational Studies HIP''' This is satisfied by taking ECT 438, which is required as part of the CS major.


''Linux.3'' Log in to the CS server, create a directory named notes in your home directory, and create a text file named linux.txt and put in some links to linux tutorials or information that you have found helpful.
'''Internships/Cooperative Experiences'''   Students are encouraged to seek internships and part-time jobs related to computer science as early as possible in your education. These experiences can greatly increase your chances of finding a good job right after graduating. Note that students who are in the US on a student visa can only be employed off campus as part of a requirement for a course (depending on your particular visa situation). Undergraduate students can enroll in CS 399; graduate students can enroll in CS 699. Contact one of the CS advisors for more information.


''Linux.4'' Log in to the CS server, create a directory named linux-bootcamp in your home directory.
'''Start in CS 151?''' For those starting CS at ISU, we need to decide if you will start in CS 151 during your first term. All CS students start in ECT 130. We recommend taking CS 151 also during your first term. This gets you further into the major sooner.


''Linux.5'' In your linux-bootcamp directory, create a text file shake.txtIn shake.txt, put how many lines are in the shakespeare.txt file mentioned in the information above.
'''Lab sections, CS 499''' The following courses have required lab sections: CS 401, CS 456, CS 457, CS 458. These are co-reqs, so even if MySAM does not have the lab section listed as required (because you are on an older catalog year) you need to sign up for both the lab and lectureFor example, in the computing science concentration you need to take CS 458, and will need to take CS 458L as well. Note for graduate students - there are no lab sections for the 500 level versions of these courses; the instructor might allow you to sit in on the lab for extra help, check with them.


''Linux.6'' In your shake.txt file, add information about how many times "the" appears in shakespeare.txtUse the command grep,  
''' Choosing Courses''' Each term when it is time to choose courses for the following term, you should do the following.
add to what you had how many lines "the" appears in shakespeare.txt. Hint - use the -c option for grep, also use the -i option so your count will also include "The", "THE", etcIn your shake.txt, you should have the number of lines that contain "the" (including "The", etc.), and also the percentage of the lines that contain the.
* In MySAM, check what you still need to complete, your advisor's past notes (at the bottom of the page in MySAM), and the plan that is in MySAM. That should give you your first draft of what to take in the following term.
* If taking any courses currently that are prerequisites for other courses, keep in mind whether you will likely earn a C or higher or notIf you might not earn a C, include this possibility in your plans (retaking the course or changing concentrations if that would make the course not required) and let your advisor know.  CS courses that are prereqs for others: Math 132, CS 101 / ECT 130, 151, 170, 201, 202, 303, 351, 401&L.  You can see a chart of the prereqs in [https://docs.google.com/drawings/d/1qlwH-zRga42O3jIYn6PeP8jbRKGQQV_URTIVUF4-CBU/edit?usp=sharing this document].
* Remember that most courses that are 100/200/300 level in CS are offered each Fall and Spring term, while most 400 level courses are offered only once per year.  Check the schedule of classes to confirm that the courses you wish to take are offered in the term you want to take them.
* In MySAM, check if you have any holds on registering, and if so make sure to take care of themIf you have questions about holds, contact the [https://indianastate.edu/office-registrar Office of the Registrar].
* Note whether you will need a pin to register - as of 2026, all undergraduate students need a pin to register.
* Either schedule a meeting with your advisor, or write an email to your advisor with your plan for your courses.
* When writing to your advisor, always include your id # (starts with 991 or 992) and which term you hope to graduate.


''Linux.7'' In your linux-bootcamp directory, create a text file weather.txtCopy the Indianapolis weather csv file from /var/junk/weather/ into your linux-bootcamp directoryIn your weather.txt file, put how many rows of data are in the csv file (use wc, head, and tail)Assuming 365 days per year, put in your weather.txt file how many years of data are in the csv file.
'''TBA / Online Asynchronous''' Courses that are online asynchronous will have the time and place listed as TBA on the course schedule.  This is because these courses do not have a predetermined meeting time and placeRather, instruction is by video, email/Teams/discussion boards, and arranged meetings as neededThese online sections are often set so that only distance students can register for them, though this is sometimes updated one week before the start of term so that anyone can register for themFor other departments, you can check with the department on their policy for these courses.


''Linux.8'' In your weather.txt file, put the maximum PRCP, SNOW, SNWD, TMAX, TMIN, MEAN from the csv file. Hint - use the sort command, and use the options -t, -k, -n, -o.
== Plans of Study ==
The undergraduate catalog contains plans of study for each major as does MySAM after you have declared a major. To see sample plans of study for all of the different concentrations in one place, see [https://cs.indstate.edu/info/files/Program_plans_CS_2024.xlsx Program_plans_CS_2024.xlsx]. Note that this file contains the following plans of study, which are all separate sheets.
* CS BS computing science concentration, 8 semester plan
* CS BS computing concentration, 4 semester TSAP plan (assumes you have completed a two year computer science  TSAP at Ivy Tech or other Indiana college/university, then complete the CS degree at ISU in 4 semesters, see also [https://cs.indstate.edu/info/files/TSAP_CS.pdf TSAP learning outcomes])
* CS BS data science concentration, 8 semester plan
* CS BS data science concentration, 4 semester TSAP plan
* CS BS information science concentration, 8 semester plan
* CS BS information science concentration, 4 semester TSAP plan
You can also see the "CS BS" sheet  in [https://docs.google.com/spreadsheets/d/1mBt7E5r35rLXG5Ith0SjUMHiHmUtxH58v_ZOvt3bjvA/edit?usp=sharing CS Course Sequences] for the recommended sequence just for the CS courses.


=Account Configuration=
== Constraints on Completing the CS BS ==
Bash reads configuration information from a file <code>~/.bashrc</code>A file with good defaults for the CS server are at [https://cs.indstate.edu/~jkinne/training_files/.bashrc .bashrc]. More help on bash - [https://www.gnu.org/software/bash/manual/ bash manual].
There are two main constraints on how quickly you can finish a major - prerequisites (must take course X before Y, and Y before Z, etc.) and when courses are offeredYou can see the prerequisite structure for the CS courses in [https://docs.google.com/drawings/d/1qlwH-zRga42O3jIYn6PeP8jbRKGQQV_URTIVUF4-CBU/edit?usp=sharing ISU CS BS program and prereqs], and you can see the recommended sequence to take courses in at [https://docs.google.com/spreadsheets/d/1mBt7E5r35rLXG5Ith0SjUMHiHmUtxH58v_ZOvt3bjvA/edit?usp=sharing CS course sequencing] (which in particular shows how to complete each concentration in 6-7 semesters depending on whether CS 151 is taken the first term and which term you start in).  You can see how the last two years of the major in each concentration can be completed in two years by checking the TSAP sheet in the linked sheet.  Your exact situation may differ slightly than any of these scenarios depending on what you already have completed in terms of CS courses and math courses.


If you want to see what commands you have run in the current login session you can run the command <code>history</code>.  Bash also keeps history from previous sessions in the file <code>~/.bash_history</code>.
Note that if a single course or prerequisite would result in delaying the completion of your degree please check with your advisorIt may be appropriate to waive a prerequisite or petition for a substitution so that you can graduate when desired. This is more likely to be possible the better you do in your CS courses, and of course there are no guarantees that we can accommodate the graduation timeline you would like.
 
You should create the following directories and use (a) your <code>bin</code> directory to put programs or scripts that you have downloaded or created that you want to be able to use, (b) your <code>programs</code> directory to put installation files for programs that you might need, (c) your <code>private</code> directory to keep files you want to make sure to keep private from other users, and (d) your <code>public_html</code> directory to store files that you want to be accessible on the web (at https://cs.indstate.edu/~YOUR_LOGIN).
<pre>
mkdir ~/bin/
echo "export PATH=$PATH:~/bin/" >> .bashrc  # add the ~/bin/ directory to where shell looks for programs
mkdir ~/programs/
mkdir ~/private/
chmod go-rwx ~/private/    # makes that directory not accessible to other users
mkdir ~/public_html/
chmod go+rx ~/public_html/ # so the web server can access this directory
chmod go+x ~              # so the web server can access your public_html
</pre>
Note that the web server is Apache, so if you want to configure how it processes files in your account, you should look for help on the Apache web server. It is also possible to run a web server using node.js; you can look up tutorials for how to do that.
 
=Copying/Creating/Editing Files=
Create a file in your <code>public_html</code> directory, and practice copying a file from somewhere else on the system.
<pre>
cd ~/public_html
nano hello.txt  # or use your preferred editor - vim, emacs, jove, ...
# type something in your hello.txt file, save it, and
# check that you can view it at https://cs.indstate.edu/~YOUR_LOGIN/hello.txt
cp /usr/dict/words . # copies that file into current directory, which should still be your public_html
# now check https://cs.indstate.edu/~YOUR_LOGIN/words
</pre>
Create a sub-directory within your <code>public_html</code> directory, put some file there, edit the Apache configuration file (<code>.htaccess</code>) to allow directory listing of this directory (turned off by default for security reasons).
<pre>
cd ~/public_html
mkdir files_public
cd files_public
echo "Options +Indexes" >> .htaccess
ls -a         # verify that the .htaccess file exists now
cat .htaccess # see what is in the file now
cp /var/junk/kinne/text-samples/shakespeare.txt .
cp /var/junk/kinne/text-samples/austen.txt .
# Now browse to https://cs.indstate.edu/~YOUR_LOGIN/files_public
</pre>
 
=Long Running Jobs=
If you have a process that needs to run for more than a few minutes, you should run it like this:
<pre>time nice -n 19 whatever_command</pre>
Starting the command with <code>time</code> will give you a printout afterwards of how much time the job took (<code>man time</code> for more details). Having <code>nice -n 19</code> makes your long running job run at a lower priority. Your job will finish just as fast, but it will interfere less with more important processes (other users on the system).
 
If the job is going to take an hour or more, you probably want to run it like this:
<pre>time nice -n 19 whatever_command > output.txt 2>stderr.txt &</pre>
The <code> > output.txt</code> will have output go to the output.txt file, and <code> 2>stderr.txt</code> (no spaces is important) redirects error output to stderr.txt. The <code>&</code> will detach the process from your terminal so that it can continue running even if your terminal disconnects. You can login again and check on it by running <code>ps a</code> to see all your running processes (not just the ones started on the current login).
 
Alternatively to redirecting the output and detaching, you could use the <code>screen</code> command to run the command in a terminal that you can detach. You can lookup help on the screen command for how to do that (for example, [https://www.geeksforgeeks.org/screen-command-in-linux-with-examples/ here]).

Revision as of 13:15, 22 May 2026

The undergraduate programs are listed in the catalog and linked from the CS homepage. The present page contains advice not contained there. Check the CS Programs page and catalog information first, and then come back here.

Who to Get Advice From

Each student has a professional advisor who approves your selection of courses and gives you an advising pin. You also will have a faculty advisor to advise you on your major courses. Students who do not yet have a CS faculty member as an advisor should feel free to contact the CS advisors to get advice and make sure you are taking the right courses.

The CS faculty who currently serve as advisors for undergraduate students are Jeff Kinne. Students can also get unofficial advice from other CS faculty and other students.

Concentrations

See the description of the CS major in the Undergraduate Catalog (https://catalog.indstate.edu/index.php) and for descriptions of the concentrations. Some additional notes on the concentrations...

  • Calculus - computing science and data science require calculus, while information science does not. If you choose one of the concentrations that requires calculus, take a math course each semester until you are through Math 132 Calculus II so that you will have that finished as a prereq when you need it.
  • Time to complete - below on this page has programs of study and information about course sequencing. You will see that the computing science and data science concentrations have a longer "prereq chain" - sequence of courses that have to be taken one before the next. The information science concentration has more lower level courses and can be completed more quickly. If you are a transfer student without the first few courses in the major done already, information science would probably have you finish sooner.
  • Courses outside your concentration - you should feel free to take courses outside your concentration as long as they fit in your schedule and you have the prereqs. You need to complete the requirements for one of the concentrations, but that does not prevent you from taking additional CS courses. In general, the wider exposure you get in your coursework the better.

Other Courses and General Advice

When Offered Most classes are only offered once per year. So, for example, you cannot plan to take CS 470 in the spring. Only the beginning CS courses are offered every semester, and certain courses are only offered once every two years or as needed. See Courses for information on when courses are normally offered.

Breadth Exposure You must take all the courses from one of the concentrations. For the broadest exposure to computer science, we recommend taking a few courses from other concentrations as well.

Non-CS Courses Courses that are not required but which are useful and recommended: Math 231 Calculus III, Math 252 Programming in Mathematics, Math 313 Elementary Linear Algebra, Math 341 Probability and Statistics, Physics (Phys 105 and 106, or Phys 115 and 116), Electronics (ECT 160 Electronic Fundamentals, ECT 173 Fundamentals of Information Technology, ECT 231 Digital Computer Logic, ECT 232 Digital Computer Circuits), an economics course. See the undergraduate catalog of courses for information on particular courses.

Foundational Studies HIP This is satisfied by taking ECT 438, which is required as part of the CS major.

Internships/Cooperative Experiences Students are encouraged to seek internships and part-time jobs related to computer science as early as possible in your education. These experiences can greatly increase your chances of finding a good job right after graduating. Note that students who are in the US on a student visa can only be employed off campus as part of a requirement for a course (depending on your particular visa situation). Undergraduate students can enroll in CS 399; graduate students can enroll in CS 699. Contact one of the CS advisors for more information.

Start in CS 151? For those starting CS at ISU, we need to decide if you will start in CS 151 during your first term. All CS students start in ECT 130. We recommend taking CS 151 also during your first term. This gets you further into the major sooner.

Lab sections, CS 499 The following courses have required lab sections: CS 401, CS 456, CS 457, CS 458. These are co-reqs, so even if MySAM does not have the lab section listed as required (because you are on an older catalog year) you need to sign up for both the lab and lecture. For example, in the computing science concentration you need to take CS 458, and will need to take CS 458L as well. Note for graduate students - there are no lab sections for the 500 level versions of these courses; the instructor might allow you to sit in on the lab for extra help, check with them.

Choosing Courses Each term when it is time to choose courses for the following term, you should do the following.

  • In MySAM, check what you still need to complete, your advisor's past notes (at the bottom of the page in MySAM), and the plan that is in MySAM. That should give you your first draft of what to take in the following term.
  • If taking any courses currently that are prerequisites for other courses, keep in mind whether you will likely earn a C or higher or not. If you might not earn a C, include this possibility in your plans (retaking the course or changing concentrations if that would make the course not required) and let your advisor know. CS courses that are prereqs for others: Math 132, CS 101 / ECT 130, 151, 170, 201, 202, 303, 351, 401&L. You can see a chart of the prereqs in this document.
  • Remember that most courses that are 100/200/300 level in CS are offered each Fall and Spring term, while most 400 level courses are offered only once per year. Check the schedule of classes to confirm that the courses you wish to take are offered in the term you want to take them.
  • In MySAM, check if you have any holds on registering, and if so make sure to take care of them. If you have questions about holds, contact the Office of the Registrar.
  • Note whether you will need a pin to register - as of 2026, all undergraduate students need a pin to register.
  • Either schedule a meeting with your advisor, or write an email to your advisor with your plan for your courses.
  • When writing to your advisor, always include your id # (starts with 991 or 992) and which term you hope to graduate.

TBA / Online Asynchronous Courses that are online asynchronous will have the time and place listed as TBA on the course schedule. This is because these courses do not have a predetermined meeting time and place. Rather, instruction is by video, email/Teams/discussion boards, and arranged meetings as needed. These online sections are often set so that only distance students can register for them, though this is sometimes updated one week before the start of term so that anyone can register for them. For other departments, you can check with the department on their policy for these courses.

Plans of Study

The undergraduate catalog contains plans of study for each major as does MySAM after you have declared a major. To see sample plans of study for all of the different concentrations in one place, see Program_plans_CS_2024.xlsx. Note that this file contains the following plans of study, which are all separate sheets.

  • CS BS computing science concentration, 8 semester plan
  • CS BS computing concentration, 4 semester TSAP plan (assumes you have completed a two year computer science TSAP at Ivy Tech or other Indiana college/university, then complete the CS degree at ISU in 4 semesters, see also TSAP learning outcomes)
  • CS BS data science concentration, 8 semester plan
  • CS BS data science concentration, 4 semester TSAP plan
  • CS BS information science concentration, 8 semester plan
  • CS BS information science concentration, 4 semester TSAP plan

You can also see the "CS BS" sheet in CS Course Sequences for the recommended sequence just for the CS courses.

Constraints on Completing the CS BS

There are two main constraints on how quickly you can finish a major - prerequisites (must take course X before Y, and Y before Z, etc.) and when courses are offered. You can see the prerequisite structure for the CS courses in ISU CS BS program and prereqs, and you can see the recommended sequence to take courses in at CS course sequencing (which in particular shows how to complete each concentration in 6-7 semesters depending on whether CS 151 is taken the first term and which term you start in). You can see how the last two years of the major in each concentration can be completed in two years by checking the TSAP sheet in the linked sheet. Your exact situation may differ slightly than any of these scenarios depending on what you already have completed in terms of CS courses and math courses.

Note that if a single course or prerequisite would result in delaying the completion of your degree please check with your advisor. It may be appropriate to waive a prerequisite or petition for a substitution so that you can graduate when desired. This is more likely to be possible the better you do in your CS courses, and of course there are no guarantees that we can accommodate the graduation timeline you would like.