<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://cs.indstate.edu/web/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jkinne</id>
	<title>Computer Science at Indiana State University - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://cs.indstate.edu/web/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jkinne"/>
	<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php/Special:Contributions/Jkinne"/>
	<updated>2026-06-07T18:30:48Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=FAQ&amp;diff=864</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=FAQ&amp;diff=864"/>
		<updated>2026-06-05T02:03:39Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: /* Recommended Computer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Recommended Computer==&lt;br /&gt;
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.  &lt;br /&gt;
&lt;br /&gt;
All other things being equal, getting a computer that is not &amp;quot;bottom of the barrel&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
You should also have the ability to install programs on the system and have a normally reliable internet connection at home if possible.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
University recommendations are listed [https://indstate.teamdynamix.com/TDClient/1851/Portal/KB/Article/71665/Student-Laptop-Minimum-Specifications here] and are similar to that described above.&lt;br /&gt;
&lt;br /&gt;
== CS 151 == &lt;br /&gt;
New students majoring in computer science should take ECT 130 and CS 151 their first term. ECT 130 is an overview of CS, IT, and CEET majors. It is required for all of those majors. There is a &#039;&#039;small&#039;&#039; amount of programming. CS 151 is the first programming course in the CS major, is a full semester of programming (in Python, as of 2026), and helps to decide whether you prefer CS or IT.&lt;br /&gt;
&lt;br /&gt;
If you are a new student and have a really full first semester, you might just take ECT 130 your first term, and wait to take CS 151 your second term. But we recommend taking CS 151 your first term if you can fit it in; it helps you decide if you want to stick with computer science, and it gets you further into the major sooner (which is good for applying for internships).&lt;br /&gt;
&lt;br /&gt;
== Should you buy your textbooks? ==&lt;br /&gt;
Find a copy for a reasoanble price, and yes, purchase it. You will be more likely to actually read it if you have a copy (rather than trying to borrow a copy or something). Whatever your major is, you should want to learn the course content. Also, not everything you need to know is covered in lecture (there just isn&#039;t enough time), and it&#039;s up to you to fill in the gaps.&lt;br /&gt;
&lt;br /&gt;
== Positions in the department ==&lt;br /&gt;
We consider all CS students whenever we have an opening. The most important qualities we consider are how well you do in your courses (are you one of the top few students?), how responsible and hard-working you are, and how well you communicate and interact with others.&lt;br /&gt;
&lt;br /&gt;
== Finding information at ISU ==&lt;br /&gt;
Think of what the department might be called, and try going to the [https://indianastate.edu/search/offices A-Z Department/Office Directory] and searching using the browser&#039;s search option (ctrl-f). You can also try doing a regular internet search (google, bing, etc.) with Indiana State University and whatever you are looking for (directory, schedule of classes, etc.). That sometimes gets you to the right page faster than using ISU&#039;s search page.&lt;br /&gt;
&lt;br /&gt;
== How to contact your professors ==&lt;br /&gt;
Check your professor&#039;s class schedule (see the schedule of classes linked off the [http://cs.indstate.edu CS homepage]). You can normally catch a professor just before or just after one of their classes, and then ask them when you could come to their office or how they prefer to be contacted. Once the semester starts office hours should be in the syllabus for each course.&lt;br /&gt;
&lt;br /&gt;
== Why are you Here? ==&lt;br /&gt;
Ask yourself why you are paying ISU thousands of dollars for a degree? Hopefully because you are &#039;&#039;interested&#039;&#039; in CS and also want to get a job in CS after graduating. This is much more likely to happen (getting a job in CS) if you take your courses seriously and put your full effort in. Students who do not do their best, or try to get others to to their work, have much less success in securing good jobs after graduating.&lt;br /&gt;
&lt;br /&gt;
== Programming and Linux ==&lt;br /&gt;
Many professors (e.g., Kinne) require students to turn in assignments on the CS server. For these courses you will do most (or all) of your programming assignments for the course on the CS server. To be counted as correct, in these courses your program must compile and run on the CS server. See [[Programming and CS - Getting Started]] for help in getting started on the CS machines.&lt;br /&gt;
&lt;br /&gt;
== Planning Ahead ==&lt;br /&gt;
You should begin to think about applying for jobs at least one year before you will do so. If you wait until you graduate to think about how to get a job after graduation, you will not be as successful. Some of our graduates have decided to complete an industry certification program (e.g., from Microsoft, Oracle, or Cisco) to increase their chances of getting a job after graduation; we have been told this can take about one year from when you begin.&lt;br /&gt;
&lt;br /&gt;
For both on campus jobs and jobs after graduation, you wil benefit by doing well in your classes - (i) doing well better prepares you, (ii) having a higher GPA looks better to prospective employers, and (iii) your professors can give you good recommendation letters if you have done well in their classes. It really does pay off to do your best in your classes (and participate fully - pay attention, answer/ask questions, etc.).&lt;br /&gt;
&lt;br /&gt;
== On Campus Jobs ==&lt;br /&gt;
You can view available on-campus jobs by visiting [http://jobs.indstate.edu/] and clicking on the appropriate category for you. Make sure to check back regularly because jobs might not all be posted by the beginning of the semester. To apply for a position, you need to apply online; it will normally not do you any good to contact the department in person as well. Make sure to submit all documents that are asked for (e.g., resume, transcripts, cover letter). A cover letter should briefly explain your background and interests, and indicate enthusiasm for the position you are applying for. For the resume, see [[Careers]] for advice and you can find examples online to get ideas for the appropriate format and contents; as a general philosophy, you should be very positive about yourself, but do not ever lie (e.g., do not say you know Java if you do not). For additional help in writing your resume and cover letter, you can contact the Career Center or more senior CS students (e.g., lab assistants who are currently on duty in the lab).&lt;br /&gt;
&lt;br /&gt;
Note for new students. The application system asks you to list some number of references. You can list professors who you will have in class or your advisor, but they will not be able to say much about you other than what they might know from your transcript. It is better to list a reference that knows you (possibly someone you had in previous studies or work). Once you have been in class long enough to have had some assignments or exams graded, the professors you have in class might able to give more support in a recommendation for you. And always check with someone before listing them as a reference.&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=FAQ&amp;diff=863</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=FAQ&amp;diff=863"/>
		<updated>2026-06-05T02:03:11Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: /* CS 151 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Recommended Computer=&lt;br /&gt;
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.  &lt;br /&gt;
&lt;br /&gt;
All other things being equal, getting a computer that is not &amp;quot;bottom of the barrel&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
You should also have the ability to install programs on the system and have a normally reliable internet connection at home if possible.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
University recommendations are listed [https://indstate.teamdynamix.com/TDClient/1851/Portal/KB/Article/71665/Student-Laptop-Minimum-Specifications here] and are similar to that described above.&lt;br /&gt;
&lt;br /&gt;
== CS 151 == &lt;br /&gt;
New students majoring in computer science should take ECT 130 and CS 151 their first term. ECT 130 is an overview of CS, IT, and CEET majors. It is required for all of those majors. There is a &#039;&#039;small&#039;&#039; amount of programming. CS 151 is the first programming course in the CS major, is a full semester of programming (in Python, as of 2026), and helps to decide whether you prefer CS or IT.&lt;br /&gt;
&lt;br /&gt;
If you are a new student and have a really full first semester, you might just take ECT 130 your first term, and wait to take CS 151 your second term. But we recommend taking CS 151 your first term if you can fit it in; it helps you decide if you want to stick with computer science, and it gets you further into the major sooner (which is good for applying for internships).&lt;br /&gt;
&lt;br /&gt;
== Should you buy your textbooks? ==&lt;br /&gt;
Find a copy for a reasoanble price, and yes, purchase it. You will be more likely to actually read it if you have a copy (rather than trying to borrow a copy or something). Whatever your major is, you should want to learn the course content. Also, not everything you need to know is covered in lecture (there just isn&#039;t enough time), and it&#039;s up to you to fill in the gaps.&lt;br /&gt;
&lt;br /&gt;
== Positions in the department ==&lt;br /&gt;
We consider all CS students whenever we have an opening. The most important qualities we consider are how well you do in your courses (are you one of the top few students?), how responsible and hard-working you are, and how well you communicate and interact with others.&lt;br /&gt;
&lt;br /&gt;
== Finding information at ISU ==&lt;br /&gt;
Think of what the department might be called, and try going to the [https://indianastate.edu/search/offices A-Z Department/Office Directory] and searching using the browser&#039;s search option (ctrl-f). You can also try doing a regular internet search (google, bing, etc.) with Indiana State University and whatever you are looking for (directory, schedule of classes, etc.). That sometimes gets you to the right page faster than using ISU&#039;s search page.&lt;br /&gt;
&lt;br /&gt;
== How to contact your professors ==&lt;br /&gt;
Check your professor&#039;s class schedule (see the schedule of classes linked off the [http://cs.indstate.edu CS homepage]). You can normally catch a professor just before or just after one of their classes, and then ask them when you could come to their office or how they prefer to be contacted. Once the semester starts office hours should be in the syllabus for each course.&lt;br /&gt;
&lt;br /&gt;
== Why are you Here? ==&lt;br /&gt;
Ask yourself why you are paying ISU thousands of dollars for a degree? Hopefully because you are &#039;&#039;interested&#039;&#039; in CS and also want to get a job in CS after graduating. This is much more likely to happen (getting a job in CS) if you take your courses seriously and put your full effort in. Students who do not do their best, or try to get others to to their work, have much less success in securing good jobs after graduating.&lt;br /&gt;
&lt;br /&gt;
== Programming and Linux ==&lt;br /&gt;
Many professors (e.g., Kinne) require students to turn in assignments on the CS server. For these courses you will do most (or all) of your programming assignments for the course on the CS server. To be counted as correct, in these courses your program must compile and run on the CS server. See [[Programming and CS - Getting Started]] for help in getting started on the CS machines.&lt;br /&gt;
&lt;br /&gt;
== Planning Ahead ==&lt;br /&gt;
You should begin to think about applying for jobs at least one year before you will do so. If you wait until you graduate to think about how to get a job after graduation, you will not be as successful. Some of our graduates have decided to complete an industry certification program (e.g., from Microsoft, Oracle, or Cisco) to increase their chances of getting a job after graduation; we have been told this can take about one year from when you begin.&lt;br /&gt;
&lt;br /&gt;
For both on campus jobs and jobs after graduation, you wil benefit by doing well in your classes - (i) doing well better prepares you, (ii) having a higher GPA looks better to prospective employers, and (iii) your professors can give you good recommendation letters if you have done well in their classes. It really does pay off to do your best in your classes (and participate fully - pay attention, answer/ask questions, etc.).&lt;br /&gt;
&lt;br /&gt;
== On Campus Jobs ==&lt;br /&gt;
You can view available on-campus jobs by visiting [http://jobs.indstate.edu/] and clicking on the appropriate category for you. Make sure to check back regularly because jobs might not all be posted by the beginning of the semester. To apply for a position, you need to apply online; it will normally not do you any good to contact the department in person as well. Make sure to submit all documents that are asked for (e.g., resume, transcripts, cover letter). A cover letter should briefly explain your background and interests, and indicate enthusiasm for the position you are applying for. For the resume, see [[Careers]] for advice and you can find examples online to get ideas for the appropriate format and contents; as a general philosophy, you should be very positive about yourself, but do not ever lie (e.g., do not say you know Java if you do not). For additional help in writing your resume and cover letter, you can contact the Career Center or more senior CS students (e.g., lab assistants who are currently on duty in the lab).&lt;br /&gt;
&lt;br /&gt;
Note for new students. The application system asks you to list some number of references. You can list professors who you will have in class or your advisor, but they will not be able to say much about you other than what they might know from your transcript. It is better to list a reference that knows you (possibly someone you had in previous studies or work). Once you have been in class long enough to have had some assignments or exams graded, the professors you have in class might able to give more support in a recommendation for you. And always check with someone before listing them as a reference.&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=Programming_and_CS_-_Getting_Started&amp;diff=862</id>
		<title>Programming and CS - Getting Started</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=Programming_and_CS_-_Getting_Started&amp;diff=862"/>
		<updated>2026-06-05T02:02:38Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=Getting Started Pages=&lt;br /&gt;
* [[CS accounts]]&lt;br /&gt;
* [[Linux and CS Systems - Getting Started]]&lt;br /&gt;
* [[Python Programming - Getting Started]]&lt;br /&gt;
* [[C Programming - Getting Started]]&lt;br /&gt;
* [[R Programming - Getting Started]]&lt;br /&gt;
* [[Algorithms and Data Structures - Getting Started]]&lt;br /&gt;
* [[Gitlab - Getting Started]]&lt;br /&gt;
&lt;br /&gt;
=Practice Programming Contest Problems=&lt;br /&gt;
See [[Programming Practice]].&lt;br /&gt;
&lt;br /&gt;
= Source Control =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* https://try.github.io/&lt;br /&gt;
* https://learngitbranching.js.org/&lt;br /&gt;
* https://www.atlassian.com/git&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=Programming_and_CS_-_Getting_Started&amp;diff=861</id>
		<title>Programming and CS - Getting Started</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=Programming_and_CS_-_Getting_Started&amp;diff=861"/>
		<updated>2026-06-05T02:02:21Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: /* Recommended Computer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
=Getting Started Pages=&lt;br /&gt;
* [[CS accounts]]&lt;br /&gt;
* [[Linux and CS Systems - Getting Started]]&lt;br /&gt;
* [[Python Programming - Getting Started]]&lt;br /&gt;
* [[C Programming - Getting Started]]&lt;br /&gt;
* [[R Programming - Getting Started]]&lt;br /&gt;
* [[Algorithms and Data Structures - Getting Started]]&lt;br /&gt;
* [[Gitlab - Getting Started]]&lt;br /&gt;
&lt;br /&gt;
=Practice Programming Contest Problems=&lt;br /&gt;
See [[Programming Practice]].&lt;br /&gt;
&lt;br /&gt;
= Source Control =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* https://try.github.io/&lt;br /&gt;
* https://learngitbranching.js.org/&lt;br /&gt;
* https://www.atlassian.com/git&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=CS_accounts&amp;diff=860</id>
		<title>CS accounts</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=CS_accounts&amp;diff=860"/>
		<updated>2026-06-04T22:29:11Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page gives information about logging into and using the CS server (cs.indstate.edu). For help about getting started with using the terminal once you can login, see [[Linux and CS Systems - Getting Started]]. For more about getting started with programming in general for CS courses, see [[Programming and CS - Getting Started]].&lt;br /&gt;
&lt;br /&gt;
=Logging In=&lt;br /&gt;
The CS server is a Linux server. The primary ways you will login to the server is either (a) with a terminal (aka shell) that allows you to type text commands, or (b) with an sftp program to transfer files between your computer and the server. In either case, you need a username (aka login) and password. There are two types of accounts on the system - ISU portal accounts, and local accounts.&lt;br /&gt;
&lt;br /&gt;
==ISU Portal Accounts==&lt;br /&gt;
Any student/faculty/staff who is involved in CS courses or programs (enrolled in a course, teaching a course, etc.) can login to cs.indstate.edu using their full ISU email address and portal password. The first time you login to the system, an account is created on the system that you can use. It will set your home directory on the system to &amp;lt;code&amp;gt;/home/SID@isuad.indstate.edu/&amp;lt;/code&amp;gt; where &amp;lt;code&amp;gt;SID&amp;lt;/code&amp;gt; is your portal id (aka sycamore id - for students it is the part before the @sycamores in your email address). After logging in, you can run the &amp;lt;code&amp;gt;pwd&amp;lt;/code&amp;gt; command to see this.&lt;br /&gt;
&lt;br /&gt;
For those familiar with Linux already... Note that there is not currently &amp;quot;finger information&amp;quot; about ISU portal account users. In fact, trying to run something like &amp;quot;finger jkinne@isuad.indstate.edu&amp;quot; will fail. Note that instructors of current courses can get a class list (aka roster) of accounts for their course; see below.&lt;br /&gt;
&lt;br /&gt;
==Local Accounts==&lt;br /&gt;
Some users will have accounts on the CS server that are not tied to their ISU portal accounts. For example, CS faculty have local accounts, and a number of users of the server prior to 2025 have local accounts. These are accounts with username and password that were created just on the server (the ability to login to the server with ISU portal credentials was added in 2025). Any new instructor teaching a CS course can ask for a local account if you do not have one already - write to root@cs.indstate.edu.&lt;br /&gt;
&lt;br /&gt;
==SSH Key==&lt;br /&gt;
You can setup an SSH key to login to the system. You will first need to login to the system normally. Once you are logged in, you can run the following commands.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/.ssh     # in case it does not exist yet&lt;br /&gt;
chmod 700 ~/.ssh # make sure this directory is not accessible to other users&lt;br /&gt;
ssh-keygen       # create keys for logging in&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
You will then transfer the private key file (the one that does not end in .pub) to your local computer in the location for ssh keys. This varies depending on your operating system. On Linux and Mac OS, it will be in &amp;lt;code&amp;gt;~/.ssh&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= CS Server Policies =&lt;br /&gt;
== Prohibitions ==&lt;br /&gt;
For any accounts that you have on the CS server, you should follow all ISU policies.  In particular the following are prohibited - &lt;br /&gt;
* using your account to store or distribute anything that is against its terms/copyright/etc. (e.g., no movies, textbooks, answers to HW problems)&lt;br /&gt;
* using your account to do anything that is illegal&lt;br /&gt;
* using a password that is too easy to guess (i.e., a password cracker that we run finds your password)&lt;br /&gt;
* overloading the CPU or GPU of the system, or filling up any of the system drives&lt;br /&gt;
* anything that is along these lines that we have not thought to state explicitly&lt;br /&gt;
A violation of any of these will result in your account being locked and no longer being allowed to have an account on the systems.&lt;br /&gt;
&lt;br /&gt;
== Inactivity ==&lt;br /&gt;
Accounts that are not used for a period of 6 months will likely be locked as a security precaution. You can write to root@cs.indstate.edu to ask to have your account unlocked again.&lt;br /&gt;
&lt;br /&gt;
=Student Use and Course Account=&lt;br /&gt;
For courses that are currently being offered, if the course uses the server, a class account is created that the instructor of the course can use if they like. This is explained in this section with two examples: CS 151 Intro to Computer Science, and CS 473/573 Computer Networks.&lt;br /&gt;
&lt;br /&gt;
==Course Account==&lt;br /&gt;
An account on the system is created where files for the class can be kept that are to be shared with the students. For CS 151, the account created has username &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt;. For CS 473/573, a single account, &amp;lt;code&amp;gt;cs473&amp;lt;/code&amp;gt;, is created that is to be used for both courses.&lt;br /&gt;
&lt;br /&gt;
==Student Use==&lt;br /&gt;
For students who are currently enrolled in a CS course that uses the server, the first time you login to the system with your ISU portal account, a directory should be created within your account for the course. For example, students in CS 151 will have a directory &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt;, and students in CS 473/573 will have a directory &amp;lt;code&amp;gt;cs473&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Permissions are set on the system so that instructors of the course have read access to the files within student&#039;s course directories for their courses. The instructor for CS 151 will have read access to the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directories of the students enrolled in CS 151; the instructor for CS 473/573 will have read access to the &amp;lt;code&amp;gt;cs473&amp;lt;/code&amp;gt; directories of the students enrolled in CS 473/573; etc. The instructor of the course might have the students submit their work on the server within these directories. Each instructor can choose how they would like to do this.&lt;br /&gt;
&lt;br /&gt;
The course account for each course also has read access to the directories for that course. For example, the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; account will have read access to the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directories within any student enrolled in CS 151.&lt;br /&gt;
&lt;br /&gt;
==Course Account - Instructor Private Files==&lt;br /&gt;
The course account is created with a &amp;lt;code&amp;gt;~/private&amp;lt;/code&amp;gt; directory that is not accessible to other users (i.e., not accessible to students). The class list (aka roster) of students and their accounts is put into this directory (&amp;lt;code&amp;gt;classlist_brief.csv&amp;lt;/code&amp;gt; with the most important information for each student, and &amp;lt;code&amp;gt;classlist_full.csv&amp;lt;/code&amp;gt; with more information). The instructor could keep other files in this &amp;lt;code&amp;gt;private&amp;lt;/code&amp;gt; directory that is meant to be private (e.g., model solutions or grading information).&lt;br /&gt;
&lt;br /&gt;
Inside the &amp;lt;code&amp;gt;~/private/&amp;lt;/code&amp;gt; directory of the course account, there is also a &amp;lt;code&amp;gt;students&amp;lt;/code&amp;gt; directory that has symbolic links to each of the student&#039;s course directories in the course. For example, if the course is cs151, and if the user jdoe12345@isuad.indstate.edu is a student in the course, then there will be a link &amp;lt;code&amp;gt;/home/cs151/private/students/jdoe12345@isuad.indstate.edu&amp;lt;/code&amp;gt; that is a link to the cs151 directory for this student (&amp;lt;code&amp;gt;/home/jdoe12345@isuad.indstate.edu/cs151/&amp;lt;/code&amp;gt;). The instructor for the course can quickly get into the students&#039; directories for the course (but not their home directory) by going to the private/students/ directory and going from there.&lt;br /&gt;
&lt;br /&gt;
The accounts for the instructors of the course are set so they can sudo as the course account. If the instructor of CS 151 uses the local account &amp;lt;code&amp;gt;jkinne&amp;lt;/code&amp;gt; then this user can run the following command to get a shell running as the CS 151 course account: &amp;lt;code&amp;gt;sudo -u cs151 -i&amp;lt;/code&amp;gt;.&lt;br /&gt;
Note that this only works for local accounts, and does not work for ISU Portal accounts (it might work for the jkinne local account but not for the jkinne@isuad.indstate.edu account).&lt;br /&gt;
&lt;br /&gt;
====Change of Semester and Backups====&lt;br /&gt;
Before the next semester, a backup copy of each course account will be created that will be in the course&#039;s &amp;lt;code&amp;gt;~/private/backup/&amp;lt;/code&amp;gt; directory. A directory will be created for the term, and it will have all of the course account&#039;s files from that term within it.&lt;br /&gt;
&lt;br /&gt;
Once the backup has been created for the previous term, the instructor for the current semester can remove files and directories that are no longer needed for the new term. For example, you can clear out the assignment directories in the course account&#039;s home directory, and also the student submissions that are in &amp;lt;code&amp;gt;~/private/submissions/&amp;lt;/code&amp;gt;. Those files will still be in the backup directory in case you need them later. &lt;br /&gt;
&lt;br /&gt;
When the new semester starts (if the course is running in the new semester), the following in the &amp;lt;code&amp;gt;~/private&amp;lt;/code&amp;gt; directory will be updated to be for the new term: classlist_brief.csv, classlist_full.csv, students directory (symbolic links to new semester&#039;s students).&lt;br /&gt;
&lt;br /&gt;
==Assignments==&lt;br /&gt;
Any directory within the course account can be used as an assignment. For example, suppose the account &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; contains a directory &amp;lt;code&amp;gt;h7&amp;lt;/code&amp;gt;. This directory might have files for the students to use on the assignment; they can view these files by going to the directory &amp;lt;code&amp;gt;/home/cs151/h7/&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
A student can &amp;quot;checkout&amp;quot; or &amp;quot;get&amp;quot; an assignment by running&lt;br /&gt;
&amp;lt;pre&amp;gt;hw_get.py cs151 h7&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will copy the &amp;lt;code&amp;gt;h7&amp;lt;/code&amp;gt; directory that is in the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; account into the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directory of the user that executes the command.&lt;br /&gt;
&lt;br /&gt;
An instructor can collect an assignment by running the script &amp;lt;code&amp;gt;hw_collect.py&amp;lt;/code&amp;gt;. For the above example, the instructor would run: &amp;lt;code&amp;gt;hw_collect.py cs151 h7&amp;lt;/code&amp;gt;. This will go into each student in the course&#039;s &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directory and copy their h7 directory into &amp;lt;code&amp;gt;/home/cs151/private/submissions/h7/&amp;lt;/code&amp;gt;. There will be a new directory in that submissions directory for the date and time the submissions were collected. For example, if the user jdoe12345@isuad.indstate.edu is in the cs151 course, then the contents of &amp;lt;code&amp;gt;/home/jdoe12345@isuad.indstate.edu/h7/&amp;lt;/code&amp;gt; will be copied into the submission directory (inside of &amp;lt;code&amp;gt;/home/cs151/private/submissions/h7/&amp;lt;/code&amp;gt;). The directory &amp;lt;code&amp;gt;/home/cs151/private/submissions/h7/&amp;lt;/code&amp;gt; will have a symbolic link &amp;lt;code&amp;gt;latest&amp;lt;/code&amp;gt; that is a pointer to the latest submission.&lt;br /&gt;
&lt;br /&gt;
There is a system in place that can be used for auto-checking the output of student programs. The instructor creates a file &amp;lt;code&amp;gt;.tests.json&amp;lt;/code&amp;gt; inside of the assignment directory that has the test cases. The instructor will also need to create a correct working version of each program that can be run to get the &amp;quot;correct&amp;quot; results. The students will use the &amp;lt;code&amp;gt;hw_check.py&amp;lt;/code&amp;gt; command to check their output. The instructor can also use the same command to check student submissions. You can get more details about how this works by logging into the system and running: &amp;lt;code&amp;gt;hw_check.py --help&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=Websites / Webservers=&lt;br /&gt;
==Apache==&lt;br /&gt;
The main cs.indstate.edu website uses the Apache web server. This is configured so that any user can put html and php files in the right directory in their account to be on the web server. Jeff Kinne, who has portal id &amp;lt;code&amp;gt;jkinne&amp;lt;/code&amp;gt; and therefore account on the server with home directory &amp;lt;code&amp;gt;jkinne@isuad.indstate.edu&amp;lt;/code&amp;gt;, would do the following to create the right directories.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~jkinne@isuad.indstate.edu   # jkinne&#039;s home directory&lt;br /&gt;
mkdir public_html               # directory apache looks in for website files&lt;br /&gt;
setfacl -m group:www-data:x .   # give apache execute access to home directory&lt;br /&gt;
setfacl -R -m group:www-data:rX public_html          # give apache rX access to public_html&lt;br /&gt;
setfacl -R -m default:group:www-data:rX public_html  # and new files will also have access&lt;br /&gt;
cd public_html                  # go into that directory&lt;br /&gt;
echo &amp;quot;Hello world&amp;quot; &amp;gt; index.html # write a hello world file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then the file index.html will be accessible on the web at https://cs.indstate.edu/~jkinne@isuad.indstate.edu. Since the web server is Apache, you can look for help on the Apache web server about configuration options (in particular .htaccess files that you can put in your public_html directory to change some settings). By default, the Apache web server understands html and php files. There may be other types of files you would want it to be able to understand; if so you can write to root@cs.indstate.edu.&lt;br /&gt;
&lt;br /&gt;
==Node, Django, etc.==&lt;br /&gt;
Node, Django, and many other web server frameworks can also be run off of the CS server. These generally will pick a port that they will run off of, and you run the main file for your server. Note that the Apache web server uses the &amp;quot;standard&amp;quot; ports (80 for http and 443 for https), so you cannot use those. If you want to run a Node, Django, or similar web server off of the CS server, you need to pick a port that isn&#039;t used for anything else. You should never pick a port number that is below 1024 and really should avoid port numbers below 10000. If you want to make sure to pick a port that will not interfere with anything, write to root@cs.indstate.edu. If you were to run your node web server with port 60000, then you would browse to it on the web at https://cs.indstate.edu:60000. Note that there is indeed normally a node server running on that particular port.&lt;br /&gt;
&lt;br /&gt;
=Spring 2026=&lt;br /&gt;
The following is the list of courses that are supported on the server for the 2026 spring, along with the instructor accounts (aka admin accounts) for each course.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
course,admin_accounts&lt;br /&gt;
cs151,&amp;quot;jkinne,jeff,jkinne@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs170,&amp;quot;hrafieipour@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs201,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs203,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs211,&amp;quot;mjenkins1@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs351,&amp;quot;rabhyankar@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs331,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs401,cs501&amp;quot;,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs401L,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs456,cs556&amp;quot;,&amp;quot;jcompton5,jcompton5@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs456L,&amp;quot;jcompton5,jcompton5@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs457,cs557&amp;quot;,&amp;quot;kwexoo,kexoo@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs457L,&amp;quot;kwexoo,kexoo@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs458,cs558&amp;quot;,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs458L,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs469,cs569&amp;quot;,&amp;quot;katterson1,katterson1@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs475,cs575&amp;quot;,&amp;quot;rabhyankar@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs500,&amp;quot;jkinne,jeff,jkinne@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs600,&amp;quot;arash,arafiey@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs601,cs417&amp;quot;,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs609,&amp;quot;katterson1,katterson1@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs611,&amp;quot;rabhyankar@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs618,&amp;quot;shosseini@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs685,&amp;quot;arash,arafiey@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs695,&amp;quot;arash,arafiey@isuad.indstate.edu&amp;quot;&lt;br /&gt;
ect438,&amp;quot;jkinne,jeff,jkinne@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If any course instructors would like any additions, subtractions, or changes to these, let the sys-admin know.&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=Gitlab_-_Getting_Started&amp;diff=859</id>
		<title>Gitlab - Getting Started</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=Gitlab_-_Getting_Started&amp;diff=859"/>
		<updated>2026-06-04T22:28:39Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;This page is part of [[Programming and CS - Getting Started]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Git=&lt;br /&gt;
[https://en.wikipedia.org/wiki/Git Git] is a version control system that can be used to keep track of your files (programming code, but also other files as well).  &lt;br /&gt;
&lt;br /&gt;
Two of the most popular installations of git (as of 2020) are [https://github.com/ github] and [https://gitlab.com/ gitlab].  When Microsoft purchased github, it became fashionable to prefer gitlab.  Github allows for projects to be hosted on their servers.  Gitlab allows for hosting either on their servers or to run a local installation of gitlab on ones own servers.&lt;br /&gt;
&lt;br /&gt;
Of late, we have hosted projects using gitlab either on gitlab&#039;s servers or on ISU&#039;s local installation of gitlab.&lt;br /&gt;
&lt;br /&gt;
=Account Setup=&lt;br /&gt;
&#039;&#039;&#039;On gitlab.com&#039;&#039;&#039; - Account setup on [https://gitlab.com/ gitlab.com] is just like any other website.  You create a free account, choose your username/password, etc.  The account is yours and is not tied in any particular way to ISU.  You can give access to your projects in much the same way as you give access to files on google drive, onedrive, dropbox, etc.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On gitlab.indstate.edu&#039;&#039;&#039; - ISU&#039;s local installation of gitlab is at https://gitlab.indstate.edu/.  For this system you use your ISU portal id and password.  You do not need to create an account.  The first time you login into the system, it initializes an account for you.  CS courses and ISU CS projects in general tend to use ISU&#039;s local installation because we can tie access based on course rosters, etc.&lt;br /&gt;
&lt;br /&gt;
=Getting Around=&lt;br /&gt;
Whether you are using gitlab.com or gitlab.indstate.edu, the functionality and &amp;quot;how to get around&amp;quot; is about the same.  You have two main methods for using either.&lt;br /&gt;
&lt;br /&gt;
==Web browser interface==&lt;br /&gt;
You can view projects within your web browser.  How to get around is fairly intuitive - as is the case with any web page, you look around and click around to see what different things do.  When you have something specific you want to do but don&#039;t see how to do, you ask the internet or ask your instructor (and we may update this wiki to give instructions on how to do it).&lt;br /&gt;
&lt;br /&gt;
==Terminal interface==&lt;br /&gt;
Git allows for downloading/uploading/etc. files in your projects from the terminal.  In order to do this, you need to (a) have a git client installed on your system, (b) understand the terminology that git uses for keeping track of files and the steps in using git to download/update/upload files, (c) make it so.&lt;br /&gt;
&lt;br /&gt;
Some reading material about using git - https://www.tutorialspoint.com/git/index.htm&lt;br /&gt;
&lt;br /&gt;
===Vocab / Cheat Sheet===&lt;br /&gt;
&lt;br /&gt;
===Workflow===&lt;br /&gt;
A common use case is that you will need to download someone else&#039;s (e.g., instructor&#039;s) gitlab project, create your own version of some part of the project, test/debug your version of the project, eventually put in a request to update the main project with your code.  The steps involved in that workflow.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Clone&#039;&#039;&#039; - To download the current version of the project you (a) browse in your terminal to the directory where you want to have the project code, (b) run &amp;lt;code&amp;gt;git clone url_to_project&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Branch&#039;&#039;&#039; - If a branch has already been created for you, then you can set that as your active branch by running &amp;lt;code&amp;gt;git checkout branch_name&amp;lt;/code&amp;gt;.  If a branch has not yet been created for you, you run &amp;lt;code&amp;gt;git branch branch_name&amp;lt;/code&amp;gt; to create a new branch.  In either case, you have a branch of the project to work within.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Do your work&#039;&#039;&#039; - You work on your files locally - test, debug, etc.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Stage/Commit/Push&#039;&#039;&#039; - To save your work to the remote server, you need to stage, commit, and push.  You can stage/commit batches of changes, or do a stage/commit for each discreet task accomplished.  If you are working in some_file.txt, you would run the following sequence of commands.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git add some_file.txt  # this &amp;quot;stages&amp;quot; the file to be part of the next commit&lt;br /&gt;
git commit -m &amp;quot;Some updates to the file&amp;quot; # This commits, will be a permanent record of this version of the file&lt;br /&gt;
git push               # sends all committed changes to the remote server&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that the push will likely ask for login information to the remote server.  Note that if you want there to be a record of a particular version of a file, you need to stage/commit the file.  It is the commit&#039;ed versions of files that are stored permanently.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pull&#039;&#039;&#039; - To pull/download updates that have happened (by others), you use &amp;lt;code&amp;gt;git pull&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Merge&#039;&#039;&#039; - When you ready to have your changes merged in to the main branch of the project, ask the owner of the project to check your branch.  When the owner is ready for it, the owner can run the following commands.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git branch main        # owner is working in the main branch&lt;br /&gt;
git merge branch_name  # merge your branch into the main branch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=Linux_and_CS_Systems_-_Getting_Started&amp;diff=858</id>
		<title>Linux and CS Systems - Getting Started</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=Linux_and_CS_Systems_-_Getting_Started&amp;diff=858"/>
		<updated>2026-06-04T22:27:42Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;This page is part of [[Programming and CS - Getting Started]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
=Getting Started=&lt;br /&gt;
# &#039;&#039;&#039;Read&#039;&#039;&#039; - [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.&lt;br /&gt;
# &#039;&#039;&#039;System Setup&#039;&#039;&#039; - [[Linux - System Setup]] - to get your computer setup (programs installed, etc.).&lt;br /&gt;
# &#039;&#039;&#039;Using the Terminal&#039;&#039;&#039;&lt;br /&gt;
## [[Linux Terminal - Files and Directories and Getting Around]]&lt;br /&gt;
## [[Linux Terminal - System Information]]&lt;br /&gt;
## [[Linux Terminal - Text Editors]]&lt;br /&gt;
## [[Using Linux - Large Text Files]]&lt;br /&gt;
## [[Linux Terminal - More Commands to Know]]&lt;br /&gt;
&lt;br /&gt;
=Common Mistakes=&lt;br /&gt;
* 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.&lt;br /&gt;
* Note that all commands and file names in Linux are &#039;&#039;&#039;case sensitive&#039;&#039;&#039;.  hello.txt is different than Hello.txt.  The copy command is cp, Cp would not work, and neither would cP or CP.&lt;br /&gt;
* The characters _ and - are different, and having a space in a file name is different than not having one (&amp;quot;hello world.txt&amp;quot; is different than &amp;quot;helloworld.txt&amp;quot;).&lt;br /&gt;
* For Linux directories and filenames, the &amp;quot;/&amp;quot; character is used to separate directories.  On Windows, the &amp;quot;\&amp;quot; character is used instead.  If you typed &amp;lt;pre&amp;gt;cd /home/cs151&amp;lt;/pre&amp;gt; then this changes the directory to the cs151 user&#039;s home directory.  If you instead typed &amp;lt;pre&amp;gt;cd \home\cs151&amp;lt;/pre&amp;gt; you would get an error.&lt;br /&gt;
* The &amp;quot;top&amp;quot; or &amp;quot;highest level&amp;quot; of the Linux file system is the directory / and this is comparable to the &amp;quot;C:\&amp;quot; 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 &#039;&#039;&#039;everything&#039;&#039;&#039; is underneath / (including additional drives, they will show up at a certain location under /).&lt;br /&gt;
* On Linux, ~ is a shortcut for your home directory.  User jkinne@isuad.indstate.edu&#039;s home directory is in /home/jkinne@isuad.indstate.edu, so if this user is logged in and types &amp;lt;pre&amp;gt;cd ~&amp;lt;/pre&amp;gt; then this means to change directories to /home/jkinne@isuad.indstate.edu/.  If user jeff types &amp;lt;pre&amp;gt;cd ~&amp;lt;/pre&amp;gt; then this means to change directories to jeff&#039;s home directory (which happens to be /home/jeff/).&lt;br /&gt;
* Not all sequences of commands are &#039;&#039;idempotent&#039;&#039; - this is a technical term that means that the sequence of commands gives the same results if executed more than once. For example, executing &amp;lt;code&amp;gt;echo &amp;quot;hello world!&amp;quot; &amp;gt;&amp;gt; hello.txt&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
* 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 &amp;lt;code&amp;gt;ps&amp;lt;/code&amp;gt; command and seeing which one is in the printed output from that command.  For example, the command for displaying your resource limits is &amp;lt;code&amp;gt;ulimit -a&amp;lt;/code&amp;gt; in bash and zsh, but is &amp;lt;code&amp;gt;limit&amp;lt;/code&amp;gt; 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).&lt;br /&gt;
&lt;br /&gt;
=More Reading=&lt;br /&gt;
Read through another tutorial about Linux.  Some options include the follow.&lt;br /&gt;
* [http://www.linuxcommand.org/ Linux Console Tutorial]&lt;br /&gt;
* [http://www.reallylinux.com/ Information for Beginning Linux Users]&lt;br /&gt;
* [http://cs.indstate.edu/~sbaker/faq/QuickRefCard.pdf Unix/Linux Quick Reference Card]&lt;br /&gt;
&lt;br /&gt;
=Self Test=&lt;br /&gt;
Note: a practice quiz over linux commands and the terminal is here - https://indstate.instructure.com/courses/12565/quizzes/244584&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Linux.1&#039;&#039; 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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Linux.2&#039;&#039; 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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Linux.3&#039;&#039; 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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Linux.4&#039;&#039; Log in to the CS server, create a directory named linux-bootcamp in your home directory.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Linux.5&#039;&#039; In your linux-bootcamp directory, create a text file shake.txt.  In shake.txt, put how many lines are in the shakespeare.txt file mentioned in the information above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Linux.6&#039;&#039; In your shake.txt file, add information about how many times &amp;quot;the&amp;quot; appears in shakespeare.txt.  Use the command grep, &lt;br /&gt;
add to what you had how many lines &amp;quot;the&amp;quot; appears in shakespeare.txt.  Hint - use the -c option for grep, also use the -i option so your count will also include &amp;quot;The&amp;quot;, &amp;quot;THE&amp;quot;, etc.  In your shake.txt, you should have the number of lines that contain &amp;quot;the&amp;quot; (including &amp;quot;The&amp;quot;, etc.), and also the percentage of the lines that contain the.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Linux.7&#039;&#039; In your linux-bootcamp directory, create a text file weather.txt.  Copy the Indianapolis weather csv file from /var/junk/weather/ into your linux-bootcamp directory.  In 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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Linux.8&#039;&#039; 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.&lt;br /&gt;
&lt;br /&gt;
=Account Configuration=&lt;br /&gt;
Bash reads configuration information from a file &amp;lt;code&amp;gt;~/.bashrc&amp;lt;/code&amp;gt;.  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].&lt;br /&gt;
&lt;br /&gt;
If you want to see what commands you have run in the current login session you can run the command &amp;lt;code&amp;gt;history&amp;lt;/code&amp;gt;.  Bash also keeps history from previous sessions in the file &amp;lt;code&amp;gt;~/.bash_history&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
You should create the following directories and use (a) your &amp;lt;code&amp;gt;bin&amp;lt;/code&amp;gt; directory to put programs or scripts that you have downloaded or created that you want to be able to use, (b) your &amp;lt;code&amp;gt;programs&amp;lt;/code&amp;gt; directory to put installation files for programs that you might need, (c) your &amp;lt;code&amp;gt;private&amp;lt;/code&amp;gt; directory to keep files you want to make sure to keep private from other users, and (d) your &amp;lt;code&amp;gt;public_html&amp;lt;/code&amp;gt; directory to store files that you want to be accessible on the web (at https://cs.indstate.edu/~YOUR_LOGIN).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/bin/&lt;br /&gt;
echo &amp;quot;export PATH=$PATH:~/bin/&amp;quot; &amp;gt;&amp;gt; .bashrc  # add the ~/bin/ directory to where shell looks for programs&lt;br /&gt;
mkdir ~/programs/&lt;br /&gt;
mkdir ~/private/&lt;br /&gt;
chmod go-rwx ~/private/    # makes that directory not accessible to other users&lt;br /&gt;
mkdir ~/public_html/&lt;br /&gt;
chmod go+rx ~/public_html/ # so the web server can access this directory&lt;br /&gt;
chmod go+x ~               # so the web server can access your public_html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=Copying/Creating/Editing Files=&lt;br /&gt;
Create a file in your &amp;lt;code&amp;gt;public_html&amp;lt;/code&amp;gt; directory, and practice copying a file from somewhere else on the system.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/public_html&lt;br /&gt;
nano hello.txt  # or use your preferred editor - vim, emacs, jove, ...&lt;br /&gt;
# type something in your hello.txt file, save it, and&lt;br /&gt;
#  check that you can view it at https://cs.indstate.edu/~YOUR_LOGIN/hello.txt&lt;br /&gt;
cp /usr/dict/words . # copies that file into current directory, which should still be your public_html&lt;br /&gt;
# now check https://cs.indstate.edu/~YOUR_LOGIN/words&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Create a sub-directory within your &amp;lt;code&amp;gt;public_html&amp;lt;/code&amp;gt; directory, put some file there, edit the Apache configuration file (&amp;lt;code&amp;gt;.htaccess&amp;lt;/code&amp;gt;) to allow directory listing of this directory (turned off by default for security reasons).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~/public_html&lt;br /&gt;
mkdir files_public&lt;br /&gt;
cd files_public&lt;br /&gt;
echo &amp;quot;Options +Indexes&amp;quot; &amp;gt;&amp;gt; .htaccess&lt;br /&gt;
ls -a         # verify that the .htaccess file exists now&lt;br /&gt;
cat .htaccess # see what is in the file now&lt;br /&gt;
cp /var/junk/kinne/text-samples/shakespeare.txt .&lt;br /&gt;
cp /var/junk/kinne/text-samples/austen.txt .&lt;br /&gt;
# Now browse to https://cs.indstate.edu/~YOUR_LOGIN/files_public&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Long Running Jobs=&lt;br /&gt;
If you have a process that needs to run for more than a few minutes, you should run it like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;time nice -n 19 whatever_command&amp;lt;/pre&amp;gt;&lt;br /&gt;
Starting the command with &amp;lt;code&amp;gt;time&amp;lt;/code&amp;gt; will give you a printout afterwards of how much time the job took (&amp;lt;code&amp;gt;man time&amp;lt;/code&amp;gt; for more details). Having &amp;lt;code&amp;gt;nice -n 19&amp;lt;/code&amp;gt; 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).&lt;br /&gt;
&lt;br /&gt;
If the job is going to take an hour or more, you probably want to run it like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;time nice -n 19 whatever_command &amp;gt; output.txt 2&amp;gt;stderr.txt &amp;amp;&amp;lt;/pre&amp;gt;&lt;br /&gt;
The &amp;lt;code&amp;gt; &amp;gt; output.txt&amp;lt;/code&amp;gt; will have output go to the output.txt file, and &amp;lt;code&amp;gt; 2&amp;gt;stderr.txt&amp;lt;/code&amp;gt; (no spaces is important) redirects error output to stderr.txt. The &amp;lt;code&amp;gt;&amp;amp;&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;ps a&amp;lt;/code&amp;gt; to see all your running processes (not just the ones started on the current login).&lt;br /&gt;
&lt;br /&gt;
Alternatively to redirecting the output and detaching, you could use the &amp;lt;code&amp;gt;screen&amp;lt;/code&amp;gt; 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]).&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=Python_Programming_-_Getting_Started&amp;diff=857</id>
		<title>Python Programming - Getting Started</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=Python_Programming_-_Getting_Started&amp;diff=857"/>
		<updated>2026-06-04T22:26:30Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: /* Installing Python on Your Personal Computer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;This page is part of [[Programming and CS - Getting Started]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For a video explaining how to get started here, see https://www.youtube.com/watch?v=uLnhcCZS4-Y&amp;amp;t=424s&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
# &#039;&#039;&#039;Reading&#039;&#039;&#039; - start reading through at least one of the following before you start working on the programming problems.&lt;br /&gt;
## [https://www.w3schools.com/python/python_intro.asp w3schools Python] - interactive tutorial where you can try out code in the browser&lt;br /&gt;
## [https://www.learnpython.org/ Learn Python] - interactive tutorial where you can try out code in the browser&lt;br /&gt;
## [https://automatetheboringstuff.com/ Automate the Boring Stuff with Python] - suitable for people with very limited programming experience, this is the text that is being followed for our CS 151 course (as of 2019)&lt;br /&gt;
## [http://greenteapress.com/thinkpython2/html/index.html Think Python] - suitable for people with very limited programming experience, not very deep&lt;br /&gt;
## [https://learnxinyminutes.com/docs/python3/ LearnXinYminutes] - quick review once you are familiar with the basics&lt;br /&gt;
## [https://docs.python.org/3/tutorial/ Python.org tutorial] - good for those with programming experience already&lt;br /&gt;
# &#039;&#039;&#039;Get Python installed on your computer&#039;&#039;&#039; - download the latest Python3 version at https://www.python.org/downloads/.  Having python3 installed on your computer allows you to debug much quicker.&lt;br /&gt;
# &#039;&#039;&#039;Work on solving problems&#039;&#039;&#039; that are listed below.&lt;br /&gt;
# If you are a current or incoming ISU student, or an ISU alumni, get help on what you are working on using the online unix lab.  When asking about the hackerrank problems make sure to refer to them using the title hackerrank gives them, or give a link to the problem statement on hackerrank.&lt;br /&gt;
# &#039;&#039;&#039;Cheat sheets&#039;&#039;&#039; - keep a cheat sheet for yourself of python syntax, built-in functions, etc.  See below on this page for our model cheat sheets.&lt;br /&gt;
&lt;br /&gt;
==Running Python==&lt;br /&gt;
&#039;&#039;See [https://youtu.be/ABmQ2QyYCLg this video] for a video demo of getting started running Python on the CS server and in IDLE.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Once you have a computer with Python installed you are ready to try it out!  You can use the CS systems (computers in our classrooms and labs, or connect to the CS server - see [[Linux - System Setup]]), or install Python on your personal computer.  &#039;&#039;We recommend doing both.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Run in the Terminal=== &lt;br /&gt;
On the CS server, other Linux systems, and macOS, you can run python using your terminal.  If you run the command &amp;lt;code&amp;gt;python3&amp;lt;/code&amp;gt; then you will see the python console.  Here you can type one python line at a time to run, and the results are displayed.  You can try these - &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2 + 3&lt;br /&gt;
3 * 4&lt;br /&gt;
10 ** 3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We normally store our python code in text files and want to run the entire file.  If you have a file with python code (let&#039;s say it is named myProgram.py) then you change directories to the directory that has your file, and then type &amp;lt;code&amp;gt;python3 myProgram.py&amp;lt;/code&amp;gt;.  You can have one terminal open where you are running your program with this command, and you can have another terminal open to edit the file (or use some other text editor).&lt;br /&gt;
&lt;br /&gt;
===Run in IDLE=== &lt;br /&gt;
Python comes with a graphical front-end called IDLE.  You can run this program if you are in the CS labs by opening your terminal and then typing &amp;lt;code&amp;gt;idle3&amp;lt;/code&amp;gt;.  If you have python installed on your personal computer, then you can find IDLE in your list of programs (Start button on Windows, Finder then click Applications on macOS) or run idle3 from the terminal (if you are using Linux).  If you are connecting to the CS server with a terminal program from home, you cannot run idle3 in the terminal because it is a graphical program - you will need to install it on your home computer to use it from home.  &lt;br /&gt;
&lt;br /&gt;
When you start IDLE, it shows you the Python3 console, where you can type your Python3 commands.  Try typing in arithmetic expressions to make sure it is working.  For example - &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2 + 3&lt;br /&gt;
3 * 4&lt;br /&gt;
10 ** 3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===First Python Program===&lt;br /&gt;
We store python programs in text files.  You can use the following as your first python program.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
print(&#039;Hello world.&#039;)&lt;br /&gt;
print(&#039;Hello again.&#039;)&lt;br /&gt;
print(&#039;Goodbye now.&#039;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If you are using IDLE you create and run a file by -&lt;br /&gt;
# Click on File and then New File.  &lt;br /&gt;
# Copy/paste or type your code in the file window that comes up.&lt;br /&gt;
# Click File and Save As.  Name the file myProgram.py and save it in whichever directory you want to keep your python programs.  &lt;br /&gt;
# Click Run and then Run Module.  In the python console window you should see that your program ran.&lt;br /&gt;
If you are connecting to the CS server with your terminal from your home computer, you can choose one of the following options.&lt;br /&gt;
* Create and edit the myProgram.py file with a text editor that works in the terminal - see [[Linux Terminal - Text Editors]].  Save the program and run the program with &amp;lt;code&amp;gt;python3 myProgram.py&amp;lt;/code&amp;gt;.  If you make changes, edit the program, and then run it again.&lt;br /&gt;
* Edit the program using a text editor on your home computer (for example, Kate or Atom, see [[Linux Terminal - Text Editors]]), transfer to the CS server using a file transfer program (see [[Linux - System Setup]]), change directories in your terminal to the directory that has the program, and then run the program in the terminal with &amp;lt;code&amp;gt;python3 myProgram.py&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Python2 versus Python3=== &lt;br /&gt;
If you want to use Python version 2 instead, you would use commands &amp;lt;code&amp;gt;python&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;idle&amp;lt;/code&amp;gt; rather than &amp;lt;code&amp;gt;python3&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;idle3&amp;lt;/code&amp;gt;.  You should normally use Python3; the only reason to use Python2 is if you are using a package that is only available on Python2 (Python2 is not officially supported anymore, so this should be fairly rare).&lt;br /&gt;
&lt;br /&gt;
==Installing Python on Your Personal Computer==&lt;br /&gt;
&#039;&#039;&#039;Windows and macOS&#039;&#039;&#039; Download and install from https://www.python.org/downloads/.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Linux&#039;&#039;&#039; On Linux python is probably already installed. If not do an internet search for your Linux distribution and &amp;quot;install python3&amp;quot; (i.e., search for - ubuntu install python).  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Chromebook&#039;&#039;&#039; You should first get the Linux development environment enabled and then you can follow instructions for installing python3 for ubuntu.  If python3 is not already installed, then running &amp;lt;code&amp;gt;sudo apt-get install python3&amp;lt;/code&amp;gt; should install it.&lt;br /&gt;
&lt;br /&gt;
==Lists of Problems==&lt;br /&gt;
===Programming Assignments 1===&lt;br /&gt;
[[Programming Assignments - Beginning 1]] - start with trying to solve these problems.  Each requires a different feature of the Python programming language, so solve these problems as you read through one of the tutorials or links above. Note that the page includes a link to repl.it that contains solutions to most of the problems.  If you do not have Python installed on your computer, you can try it out at [https://repl.it/ repl.it] - click the logo at the top, then click &amp;quot;+ new repl&amp;quot;, select Python and Create Repl.&lt;br /&gt;
&lt;br /&gt;
[[Programming Assignments - Beginning 2]] - another set of classic beginning programming exercises.  Some of these will be more involved.&lt;br /&gt;
&lt;br /&gt;
===HackerRank Problems===&lt;br /&gt;
Once you can do some basic Python programming it is time to have some of your work checked.  Hackerrank is a site where you can create an account and work on problems that will be checked if they are correct. Note that hackerrank has very strict rules for accepting correct solutions.  Start with the basic problems to get a feel for what hackerrank expects.&lt;br /&gt;
&lt;br /&gt;
[[Python programming - hackerrank problems]]&lt;br /&gt;
&lt;br /&gt;
===More Practice===&lt;br /&gt;
If you are able to do most of the problems on the pages linked above, then you don&#039;t need us to give you lists of problems any more.  You can pick problems to work through on your own.  Some suggested places with problems are as follows.&lt;br /&gt;
* [https://www.hackerrank.com/domains/algorithms Hackerrank - algorithms]&lt;br /&gt;
* [https://www.hackerrank.com/domains/data-structures Hackerrank - data structures]&lt;br /&gt;
* [http://cs.indstate.edu/acm/contests.html ACM Contest Problems]&lt;br /&gt;
&lt;br /&gt;
==Cheat Sheets and Quizzes==&lt;br /&gt;
These cheat sheets have the highlights of some of the basic information to memorize when you are in your first year of Python programming.  Note - each cheat sheet contains a sample quiz that might be used by your instructor.&lt;br /&gt;
* [[Cheat sheet - Python Operators, Expressions]]&lt;br /&gt;
* [[Cheat sheet - Python Keywords, Concepts, Functions]]&lt;br /&gt;
&lt;br /&gt;
==Programming Errors and How to Fix Them==&lt;br /&gt;
* &#039;&#039;&#039;Syntax error&#039;&#039;&#039; - program is not a valid program, and normally python gives you an error message giving some indication of what the problem was.  &lt;br /&gt;
** &#039;&#039;Debugging&#039;&#039; - read the error message!  Normally you are given a line number where python got &amp;quot;confused&amp;quot; - sometimes that is where the problem is, but you may need to look just before that line (or just after).  Common syntax errors in python...&lt;br /&gt;
** &#039;&#039;Mismatched&#039;&#039; () or [] or &amp;quot;&amp;quot; or &#039;&#039;, for example &amp;lt;code&amp;gt;x = 2 * (3 + 4&amp;lt;/code&amp;gt;&lt;br /&gt;
** &#039;&#039;Mis-capitalization or mis-spelling&#039;&#039;, for example &amp;lt;code&amp;gt;Print(&#039;hello&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
** &#039;&#039;Improper indenting&#039;&#039;, for example&lt;br /&gt;
** &#039;&#039;Data type&#039;&#039; problems - mixing up strings and numbers, for example &amp;lt;code&amp;gt;x = &#039;3&#039; + 4&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for i in range(0, 10):&lt;br /&gt;
print(i)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Runtime error&#039;&#039;&#039; - program is a valid program but when you run it something goes wrong.  Debugging is similar as for syntax errors and logical errors.  For example...&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
x = 1&lt;br /&gt;
print(x)&lt;br /&gt;
x = y + z&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Logical error&#039;&#039;&#039; - program runs but does not do the right thing. &lt;br /&gt;
** &#039;&#039;Print debugging&#039;&#039; - One debugging method is to start printing things (values of variables) in your program starting at the beginning, run the program, make sure it is printing the values you expect, at some point you see a value you don&#039;t expect, and that tells you where to look in your code.  You often are 100% sure what you have is right, but in the end there is some problem.  So you have to &#039;&#039;check everything&#039;&#039;, start at the very beginning of the program.  &lt;br /&gt;
** &#039;&#039;Disable all&#039;&#039; - Another strategy is to disable almost all parts of your program (e.g., put it all in comments) until you get behavior that makes sense, and then start adding things back in (uncommenting), and eventually you&#039;ll add something in that doesn&#039;t behave the way you thought, and now you know where the problem is.  Examples...&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
x = 1&lt;br /&gt;
y = 2&lt;br /&gt;
z = 3&lt;br /&gt;
avg = x + y + z / 3&lt;br /&gt;
print(avg)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=Programming_and_CS_-_Getting_Started&amp;diff=856</id>
		<title>Programming and CS - Getting Started</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=Programming_and_CS_-_Getting_Started&amp;diff=856"/>
		<updated>2026-06-04T22:25:07Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: /* Getting Started Pages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
=Recommended Computer=&lt;br /&gt;
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.  &lt;br /&gt;
&lt;br /&gt;
All other things being equal, getting a computer that is not &amp;quot;bottom of the barrel&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
You should also have the ability to install programs on the system and have a normally reliable internet connection at home if possible.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
University recommendations are listed [https://indstate.teamdynamix.com/TDClient/1851/Portal/KB/Article/71665/Student-Laptop-Minimum-Specifications here] and are similar to that described above.&lt;br /&gt;
&lt;br /&gt;
=Getting Started Pages=&lt;br /&gt;
* [[CS accounts]]&lt;br /&gt;
* [[Linux and CS Systems - Getting Started]]&lt;br /&gt;
* [[Python Programming - Getting Started]]&lt;br /&gt;
* [[C Programming - Getting Started]]&lt;br /&gt;
* [[R Programming - Getting Started]]&lt;br /&gt;
* [[Algorithms and Data Structures - Getting Started]]&lt;br /&gt;
* [[Gitlab - Getting Started]]&lt;br /&gt;
&lt;br /&gt;
=Practice Programming Contest Problems=&lt;br /&gt;
See [[Programming Practice]].&lt;br /&gt;
&lt;br /&gt;
= Source Control =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* https://try.github.io/&lt;br /&gt;
* https://learngitbranching.js.org/&lt;br /&gt;
* https://www.atlassian.com/git&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=Linux_-_System_Setup&amp;diff=855</id>
		<title>Linux - System Setup</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=Linux_-_System_Setup&amp;diff=855"/>
		<updated>2026-06-04T22:24:38Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is meant to help you get your computer ready to connect to the CS server. This page is in a series on [[Programming and CS - Getting Started]].&lt;br /&gt;
&lt;br /&gt;
=CS User Accounts=&lt;br /&gt;
Below we guide you through getting software setup on your computer.  In order to connect to the CS server you will also need your CS user account; see [[CS accounts]]. &lt;br /&gt;
&lt;br /&gt;
=Your Personal Computer=&lt;br /&gt;
&lt;br /&gt;
==Terminal Program==&lt;br /&gt;
A terminal program allows you to type commands to run programs and view files and folders on your computer, and allows you to do the same on a remote computer (i.e., the CS server) after you have connected to it.&lt;br /&gt;
&lt;br /&gt;
Any current computer (Windows, Mac, Linux, Chrome) has a terminal program builtin. You just need to know how to start it. For each OS, here is what you need to do...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - the first time you connect to the CS server with a terminal or file transfer program, you will be notified that the identity of cs.indstate.edu cannot be verified, an ECDSA key will be displayed, and you will be asked if you still want to connect.  Type or click yes.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Windows&#039;&#039;&#039; - use the command prompt or powershell. To use the command prompt, click the Start button (at the bottom of your screen, in the middle or the left normally), start typing either &amp;quot;command&amp;quot; or &amp;quot;cmd&amp;quot; and you should see the option to run &amp;quot;Cmd.exe&amp;quot; or &amp;quot;Command Prompt&amp;quot;. To use the PowerShell, do the same (click the Start button) but start typing &amp;quot;Power Shell&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;Mac OS&#039;&#039;&#039; - use the Terminal program. To use the built-in Terminal program, use Spotlight (hold down the command key and press spacebar) and type in &amp;quot;Terminal&amp;quot;. You should see the Terminal program to click on. You can also start Terminal by clicking on the Apps icon in the Dock, and start typing &amp;quot;Terminal&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;Linux&#039;&#039;&#039; - this depends on the distribution you are using. Some use the name &amp;quot;terminal&amp;quot; for this program, and some use the name &amp;quot;shell&amp;quot;. For Ubuntu Linux with the default user interface (Gnome), you can click on the button in the bottom left (or press the Start key on your keyboard) and then start typing &amp;quot;Terminal&amp;quot; or &amp;quot;Shell&amp;quot;. You can also directly open the terminal by holding down the control-alt-t keys.&lt;br /&gt;
* &#039;&#039;&#039;Chrome&#039;&#039;&#039; - you need to first need to enable the &amp;quot;Linux development environment&amp;quot;. Click on the G or Chrome button (in the bottom left), click on Settings, in the settings click on &amp;quot;About ChromeOS&amp;quot; on the bottom, and find the &amp;quot;Developers&amp;quot; section, then click on &amp;quot;Set up&amp;quot; for the Linux development environment, then click through the setup process (you can leave default values for everything). Once you have this complete, you can start the terminal by clicking on the G or Chrome button (in the bottom left), start typing &amp;quot;Terminal&amp;quot; and click on it. You will see a Linux section and click on the first entry to start the terminal.&lt;br /&gt;
&lt;br /&gt;
==File Transfer Program==&lt;br /&gt;
You will eventually need to transfer files between your personal computer and the CS server. &lt;br /&gt;
* All current OSes include a text-based file transfer program as part of the terminal (see above for starting a terminal). Once you have a terminal open, you use the command &amp;quot;sftp&amp;quot; to start the secure ftp program.&lt;br /&gt;
* [https://filezilla-project.org/download.php?type=client FileZilla] is a graphical file transfer program that can be installed on any current OS. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - the first time you connect to the CS server with a terminal or file transfer program, you may be notified that the identity of cs.indstate.edu cannot be verified, an ECDSA key will be displayed, and you will be asked if you still want to connect.  Type or click yes.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - make sure to choose &amp;quot;sftp&amp;quot; as opposed to &amp;quot;ftp&amp;quot; when connecting.  ftp is not encrypted and is disabled on the CS server (it will not work).  sftp is encrypted and is what we use.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Text Editor==&lt;br /&gt;
Note that while you are using a terminal that is connected to the CS server you can use text-based editors - nano, emacs, vim, jove (see [[Linux Terminal - Text Editors]] for more on how to get started with these).  You will eventually want to have a good text editor on your personal computer. &lt;br /&gt;
&lt;br /&gt;
The following are four good options that are cross-platform - can be installed on Mac, Windows, Linux, and Chromebook.  If you already use some other option (e.g., Visual Studio Code, Eclipse, Notepad++, or anything else that is used by programmers) feel free to keep using what you are already using.  Note that Word is &#039;&#039;not&#039;&#039; a text editor - it does not store files in plain text, which is what is needed for programming.&lt;br /&gt;
* [https://code.visualstudio.com/ VS Code] - one of the most popular (as of 2026) with a lot of available add-ons.&lt;br /&gt;
* [https://www.vim.org/download.php Vim] - is normally already installed by default on Linux. Follow the instructions if on a different OS.&lt;br /&gt;
* [https://www.gnu.org/software/emacs/ Emacs] - used by Jeff Kinne, click your OS and follow the instructions. The graphical version uses all the same keyboard shortcuts as the text-based version that you can also use in the terminal. Note that for Chrome OS, you will first start a Terminal (see above) and then run the command &amp;lt;code&amp;gt;sudo apt-get install emacs&amp;lt;/code&amp;gt; and answer Y when it asks if you want to install it.&lt;br /&gt;
* Other cross-platform editors that students and faculty have used - [https://kate-editor.org/get-it/ Kate],[https://www.sublimetext.com/ Submlime]&lt;br /&gt;
* You might also choose to use an Integrated Development Environment (IDE). Those have a bit of a learning curve, but if you have used one before you can use it for CS coursework as well.&lt;br /&gt;
&lt;br /&gt;
When starting to learn a new text editor do an internet search for a tutorial to get you started; once you are comfortable with the basics do an internet search for a cheat sheet of keyboard shortcuts to help you remember them.&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=Linux_-_System_Setup&amp;diff=854</id>
		<title>Linux - System Setup</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=Linux_-_System_Setup&amp;diff=854"/>
		<updated>2026-06-04T22:23:03Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: /* Text Editor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is meant to help you get your computer ready to connect to the CS server.  &lt;br /&gt;
&lt;br /&gt;
=CS User Accounts=&lt;br /&gt;
Below we guide you through getting software setup on your computer.  In order to connect to the CS server you will also need your CS user account; see [[CS accounts]]. &lt;br /&gt;
&lt;br /&gt;
=Your Personal Computer=&lt;br /&gt;
&lt;br /&gt;
==Terminal Program==&lt;br /&gt;
A terminal program allows you to type commands to run programs and view files and folders on your computer, and allows you to do the same on a remote computer (i.e., the CS server) after you have connected to it.&lt;br /&gt;
&lt;br /&gt;
Any current computer (Windows, Mac, Linux, Chrome) has a terminal program builtin. You just need to know how to start it. For each OS, here is what you need to do...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - the first time you connect to the CS server with a terminal or file transfer program, you will be notified that the identity of cs.indstate.edu cannot be verified, an ECDSA key will be displayed, and you will be asked if you still want to connect.  Type or click yes.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Windows&#039;&#039;&#039; - use the command prompt or powershell. To use the command prompt, click the Start button (at the bottom of your screen, in the middle or the left normally), start typing either &amp;quot;command&amp;quot; or &amp;quot;cmd&amp;quot; and you should see the option to run &amp;quot;Cmd.exe&amp;quot; or &amp;quot;Command Prompt&amp;quot;. To use the PowerShell, do the same (click the Start button) but start typing &amp;quot;Power Shell&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;Mac OS&#039;&#039;&#039; - use the Terminal program. To use the built-in Terminal program, use Spotlight (hold down the command key and press spacebar) and type in &amp;quot;Terminal&amp;quot;. You should see the Terminal program to click on. You can also start Terminal by clicking on the Apps icon in the Dock, and start typing &amp;quot;Terminal&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;Linux&#039;&#039;&#039; - this depends on the distribution you are using. Some use the name &amp;quot;terminal&amp;quot; for this program, and some use the name &amp;quot;shell&amp;quot;. For Ubuntu Linux with the default user interface (Gnome), you can click on the button in the bottom left (or press the Start key on your keyboard) and then start typing &amp;quot;Terminal&amp;quot; or &amp;quot;Shell&amp;quot;. You can also directly open the terminal by holding down the control-alt-t keys.&lt;br /&gt;
* &#039;&#039;&#039;Chrome&#039;&#039;&#039; - you need to first need to enable the &amp;quot;Linux development environment&amp;quot;. Click on the G or Chrome button (in the bottom left), click on Settings, in the settings click on &amp;quot;About ChromeOS&amp;quot; on the bottom, and find the &amp;quot;Developers&amp;quot; section, then click on &amp;quot;Set up&amp;quot; for the Linux development environment, then click through the setup process (you can leave default values for everything). Once you have this complete, you can start the terminal by clicking on the G or Chrome button (in the bottom left), start typing &amp;quot;Terminal&amp;quot; and click on it. You will see a Linux section and click on the first entry to start the terminal.&lt;br /&gt;
&lt;br /&gt;
==File Transfer Program==&lt;br /&gt;
You will eventually need to transfer files between your personal computer and the CS server. &lt;br /&gt;
* All current OSes include a text-based file transfer program as part of the terminal (see above for starting a terminal). Once you have a terminal open, you use the command &amp;quot;sftp&amp;quot; to start the secure ftp program.&lt;br /&gt;
* [https://filezilla-project.org/download.php?type=client FileZilla] is a graphical file transfer program that can be installed on any current OS. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - the first time you connect to the CS server with a terminal or file transfer program, you may be notified that the identity of cs.indstate.edu cannot be verified, an ECDSA key will be displayed, and you will be asked if you still want to connect.  Type or click yes.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - make sure to choose &amp;quot;sftp&amp;quot; as opposed to &amp;quot;ftp&amp;quot; when connecting.  ftp is not encrypted and is disabled on the CS server (it will not work).  sftp is encrypted and is what we use.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Text Editor==&lt;br /&gt;
Note that while you are using a terminal that is connected to the CS server you can use text-based editors - nano, emacs, vim, jove (see [[Linux Terminal - Text Editors]] for more on how to get started with these).  You will eventually want to have a good text editor on your personal computer. &lt;br /&gt;
&lt;br /&gt;
The following are four good options that are cross-platform - can be installed on Mac, Windows, Linux, and Chromebook.  If you already use some other option (e.g., Visual Studio Code, Eclipse, Notepad++, or anything else that is used by programmers) feel free to keep using what you are already using.  Note that Word is &#039;&#039;not&#039;&#039; a text editor - it does not store files in plain text, which is what is needed for programming.&lt;br /&gt;
* [https://code.visualstudio.com/ VS Code] - one of the most popular (as of 2026) with a lot of available add-ons.&lt;br /&gt;
* [https://www.vim.org/download.php Vim] - is normally already installed by default on Linux. Follow the instructions if on a different OS.&lt;br /&gt;
* [https://www.gnu.org/software/emacs/ Emacs] - used by Jeff Kinne, click your OS and follow the instructions. The graphical version uses all the same keyboard shortcuts as the text-based version that you can also use in the terminal. Note that for Chrome OS, you will first start a Terminal (see above) and then run the command &amp;lt;code&amp;gt;sudo apt-get install emacs&amp;lt;/code&amp;gt; and answer Y when it asks if you want to install it.&lt;br /&gt;
* Other cross-platform editors that students and faculty have used - [https://kate-editor.org/get-it/ Kate],[https://www.sublimetext.com/ Submlime]&lt;br /&gt;
* You might also choose to use an Integrated Development Environment (IDE). Those have a bit of a learning curve, but if you have used one before you can use it for CS coursework as well.&lt;br /&gt;
&lt;br /&gt;
When starting to learn a new text editor do an internet search for a tutorial to get you started; once you are comfortable with the basics do an internet search for a cheat sheet of keyboard shortcuts to help you remember them.&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=Linux_-_System_Setup&amp;diff=853</id>
		<title>Linux - System Setup</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=Linux_-_System_Setup&amp;diff=853"/>
		<updated>2026-06-04T22:15:42Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: /* Sample HW */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is meant to help you get your computer ready to connect to the CS server.  &lt;br /&gt;
&lt;br /&gt;
=CS User Accounts=&lt;br /&gt;
Below we guide you through getting software setup on your computer.  In order to connect to the CS server you will also need your CS user account; see [[CS accounts]]. &lt;br /&gt;
&lt;br /&gt;
=Your Personal Computer=&lt;br /&gt;
&lt;br /&gt;
==Terminal Program==&lt;br /&gt;
A terminal program allows you to type commands to run programs and view files and folders on your computer, and allows you to do the same on a remote computer (i.e., the CS server) after you have connected to it.&lt;br /&gt;
&lt;br /&gt;
Any current computer (Windows, Mac, Linux, Chrome) has a terminal program builtin. You just need to know how to start it. For each OS, here is what you need to do...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - the first time you connect to the CS server with a terminal or file transfer program, you will be notified that the identity of cs.indstate.edu cannot be verified, an ECDSA key will be displayed, and you will be asked if you still want to connect.  Type or click yes.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Windows&#039;&#039;&#039; - use the command prompt or powershell. To use the command prompt, click the Start button (at the bottom of your screen, in the middle or the left normally), start typing either &amp;quot;command&amp;quot; or &amp;quot;cmd&amp;quot; and you should see the option to run &amp;quot;Cmd.exe&amp;quot; or &amp;quot;Command Prompt&amp;quot;. To use the PowerShell, do the same (click the Start button) but start typing &amp;quot;Power Shell&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;Mac OS&#039;&#039;&#039; - use the Terminal program. To use the built-in Terminal program, use Spotlight (hold down the command key and press spacebar) and type in &amp;quot;Terminal&amp;quot;. You should see the Terminal program to click on. You can also start Terminal by clicking on the Apps icon in the Dock, and start typing &amp;quot;Terminal&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;Linux&#039;&#039;&#039; - this depends on the distribution you are using. Some use the name &amp;quot;terminal&amp;quot; for this program, and some use the name &amp;quot;shell&amp;quot;. For Ubuntu Linux with the default user interface (Gnome), you can click on the button in the bottom left (or press the Start key on your keyboard) and then start typing &amp;quot;Terminal&amp;quot; or &amp;quot;Shell&amp;quot;. You can also directly open the terminal by holding down the control-alt-t keys.&lt;br /&gt;
* &#039;&#039;&#039;Chrome&#039;&#039;&#039; - you need to first need to enable the &amp;quot;Linux development environment&amp;quot;. Click on the G or Chrome button (in the bottom left), click on Settings, in the settings click on &amp;quot;About ChromeOS&amp;quot; on the bottom, and find the &amp;quot;Developers&amp;quot; section, then click on &amp;quot;Set up&amp;quot; for the Linux development environment, then click through the setup process (you can leave default values for everything). Once you have this complete, you can start the terminal by clicking on the G or Chrome button (in the bottom left), start typing &amp;quot;Terminal&amp;quot; and click on it. You will see a Linux section and click on the first entry to start the terminal.&lt;br /&gt;
&lt;br /&gt;
==File Transfer Program==&lt;br /&gt;
You will eventually need to transfer files between your personal computer and the CS server. &lt;br /&gt;
* All current OSes include a text-based file transfer program as part of the terminal (see above for starting a terminal). Once you have a terminal open, you use the command &amp;quot;sftp&amp;quot; to start the secure ftp program.&lt;br /&gt;
* [https://filezilla-project.org/download.php?type=client FileZilla] is a graphical file transfer program that can be installed on any current OS. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - the first time you connect to the CS server with a terminal or file transfer program, you may be notified that the identity of cs.indstate.edu cannot be verified, an ECDSA key will be displayed, and you will be asked if you still want to connect.  Type or click yes.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - make sure to choose &amp;quot;sftp&amp;quot; as opposed to &amp;quot;ftp&amp;quot; when connecting.  ftp is not encrypted and is disabled on the CS server (it will not work).  sftp is encrypted and is what we use.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Text Editor==&lt;br /&gt;
Note that while you are using a terminal that is connected to the CS server you can use text-based editors - nano, emacs, vim, jove (see [[Linux Terminal - Text Editors]] for more on how to get started with these).  You will eventually want to have a good text editor on your personal computer. &lt;br /&gt;
&lt;br /&gt;
The following are four good options that are cross-platform - can be installed on Mac, Windows, Linux, and Chromebook.  If you already use some other option (e.g., Visual Studio Code, Eclipse, Notepad++, or anything else that is used by programmers) feel free to keep using what you are already using.  Note that Word is &#039;&#039;not&#039;&#039; a text editor - it does not store files in plain text, which is what is needed for programming.&lt;br /&gt;
* [https://code.visualstudio.com/ VS Code] - one of the most popular (as of 2026) with a lot of available add-ons.&lt;br /&gt;
* [https://www.vim.org/download.php Vim] - is normally already installed by default on Linux. Follow the instructions if on a different OS.&lt;br /&gt;
* [https://www.gnu.org/software/emacs/ Emacs] - used by Jeff Kinne, click your OS and follow the instructions. The graphical version uses all the same keyboard shortcuts as the text-based version that you can also use in the terminal. Note that for Chrome OS, you will first start a Terminal (see above) and then run the command &amp;lt;code&amp;gt;sudo apt-get install emacs&amp;lt;/code&amp;gt; and answer Y when it asks if you want to install it.&lt;br /&gt;
* Other cross-platform editors that students and faculty have used - [https://kate-editor.org/get-it/ Kate],[https://www.sublimetext.com/ Submlime]&lt;br /&gt;
* You might also choose to use an Integrated Development Environment (IDE). Those have a bit of a learning curve, but if you have used one before you can use it for CS coursework as well.&lt;br /&gt;
&lt;br /&gt;
When starting a new text editor do an internet search for a tutorial to get you started; once you are comfortable with the basics do an internet search for a cheat sheet of keyboard shortcuts to help you remember them.&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=Linux_-_System_Setup&amp;diff=852</id>
		<title>Linux - System Setup</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=Linux_-_System_Setup&amp;diff=852"/>
		<updated>2026-06-04T22:15:21Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: /* GUI Programs X-Windows */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is meant to help you get your computer ready to connect to the CS server.  &lt;br /&gt;
&lt;br /&gt;
=CS User Accounts=&lt;br /&gt;
Below we guide you through getting software setup on your computer.  In order to connect to the CS server you will also need your CS user account; see [[CS accounts]]. &lt;br /&gt;
&lt;br /&gt;
=Your Personal Computer=&lt;br /&gt;
&lt;br /&gt;
==Terminal Program==&lt;br /&gt;
A terminal program allows you to type commands to run programs and view files and folders on your computer, and allows you to do the same on a remote computer (i.e., the CS server) after you have connected to it.&lt;br /&gt;
&lt;br /&gt;
Any current computer (Windows, Mac, Linux, Chrome) has a terminal program builtin. You just need to know how to start it. For each OS, here is what you need to do...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - the first time you connect to the CS server with a terminal or file transfer program, you will be notified that the identity of cs.indstate.edu cannot be verified, an ECDSA key will be displayed, and you will be asked if you still want to connect.  Type or click yes.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Windows&#039;&#039;&#039; - use the command prompt or powershell. To use the command prompt, click the Start button (at the bottom of your screen, in the middle or the left normally), start typing either &amp;quot;command&amp;quot; or &amp;quot;cmd&amp;quot; and you should see the option to run &amp;quot;Cmd.exe&amp;quot; or &amp;quot;Command Prompt&amp;quot;. To use the PowerShell, do the same (click the Start button) but start typing &amp;quot;Power Shell&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;Mac OS&#039;&#039;&#039; - use the Terminal program. To use the built-in Terminal program, use Spotlight (hold down the command key and press spacebar) and type in &amp;quot;Terminal&amp;quot;. You should see the Terminal program to click on. You can also start Terminal by clicking on the Apps icon in the Dock, and start typing &amp;quot;Terminal&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;Linux&#039;&#039;&#039; - this depends on the distribution you are using. Some use the name &amp;quot;terminal&amp;quot; for this program, and some use the name &amp;quot;shell&amp;quot;. For Ubuntu Linux with the default user interface (Gnome), you can click on the button in the bottom left (or press the Start key on your keyboard) and then start typing &amp;quot;Terminal&amp;quot; or &amp;quot;Shell&amp;quot;. You can also directly open the terminal by holding down the control-alt-t keys.&lt;br /&gt;
* &#039;&#039;&#039;Chrome&#039;&#039;&#039; - you need to first need to enable the &amp;quot;Linux development environment&amp;quot;. Click on the G or Chrome button (in the bottom left), click on Settings, in the settings click on &amp;quot;About ChromeOS&amp;quot; on the bottom, and find the &amp;quot;Developers&amp;quot; section, then click on &amp;quot;Set up&amp;quot; for the Linux development environment, then click through the setup process (you can leave default values for everything). Once you have this complete, you can start the terminal by clicking on the G or Chrome button (in the bottom left), start typing &amp;quot;Terminal&amp;quot; and click on it. You will see a Linux section and click on the first entry to start the terminal.&lt;br /&gt;
&lt;br /&gt;
==File Transfer Program==&lt;br /&gt;
You will eventually need to transfer files between your personal computer and the CS server. &lt;br /&gt;
* All current OSes include a text-based file transfer program as part of the terminal (see above for starting a terminal). Once you have a terminal open, you use the command &amp;quot;sftp&amp;quot; to start the secure ftp program.&lt;br /&gt;
* [https://filezilla-project.org/download.php?type=client FileZilla] is a graphical file transfer program that can be installed on any current OS. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - the first time you connect to the CS server with a terminal or file transfer program, you may be notified that the identity of cs.indstate.edu cannot be verified, an ECDSA key will be displayed, and you will be asked if you still want to connect.  Type or click yes.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - make sure to choose &amp;quot;sftp&amp;quot; as opposed to &amp;quot;ftp&amp;quot; when connecting.  ftp is not encrypted and is disabled on the CS server (it will not work).  sftp is encrypted and is what we use.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Text Editor==&lt;br /&gt;
Note that while you are using a terminal that is connected to the CS server you can use text-based editors - nano, emacs, vim, jove (see [[Linux Terminal - Text Editors]] for more on how to get started with these).  You will eventually want to have a good text editor on your personal computer. &lt;br /&gt;
&lt;br /&gt;
The following are four good options that are cross-platform - can be installed on Mac, Windows, Linux, and Chromebook.  If you already use some other option (e.g., Visual Studio Code, Eclipse, Notepad++, or anything else that is used by programmers) feel free to keep using what you are already using.  Note that Word is &#039;&#039;not&#039;&#039; a text editor - it does not store files in plain text, which is what is needed for programming.&lt;br /&gt;
* [https://code.visualstudio.com/ VS Code] - one of the most popular (as of 2026) with a lot of available add-ons.&lt;br /&gt;
* [https://www.vim.org/download.php Vim] - is normally already installed by default on Linux. Follow the instructions if on a different OS.&lt;br /&gt;
* [https://www.gnu.org/software/emacs/ Emacs] - used by Jeff Kinne, click your OS and follow the instructions. The graphical version uses all the same keyboard shortcuts as the text-based version that you can also use in the terminal. Note that for Chrome OS, you will first start a Terminal (see above) and then run the command &amp;lt;code&amp;gt;sudo apt-get install emacs&amp;lt;/code&amp;gt; and answer Y when it asks if you want to install it.&lt;br /&gt;
* Other cross-platform editors that students and faculty have used - [https://kate-editor.org/get-it/ Kate],[https://www.sublimetext.com/ Submlime]&lt;br /&gt;
* You might also choose to use an Integrated Development Environment (IDE). Those have a bit of a learning curve, but if you have used one before you can use it for CS coursework as well.&lt;br /&gt;
&lt;br /&gt;
When starting a new text editor do an internet search for a tutorial to get you started; once you are comfortable with the basics do an internet search for a cheat sheet of keyboard shortcuts to help you remember them.&lt;br /&gt;
&lt;br /&gt;
=Sample HW=&lt;br /&gt;
The following might be used by your instructor as part of a HW assignment to verify you have your computer setup properly.&lt;br /&gt;
&lt;br /&gt;
# Follow the steps above to setup your computer with a file transfer program, text editor, and terminal program.  Make sure you are able to use the file transfer program and terminal programs to connect to your CS class account on the CS server.&lt;br /&gt;
# Make sure you can open the text editor. Create a text file aboutMySystem.txt and put the following information.&lt;br /&gt;
## Your name: &lt;br /&gt;
## Your CS class account: &lt;br /&gt;
## Operating System: &lt;br /&gt;
## Text editor you are using: &lt;br /&gt;
## File transfer program: &lt;br /&gt;
## Did you have any difficulties in getting the programs setup? If yes, explain.&lt;br /&gt;
# Create the following screen shots demonstrating that you have the programs installed on your system properly.  Note - you can ask the internet how to take a screenshot (e.g., type in - how to screenshot on chromebook).  For each screenshot, make the screenshot of your whole screen (so I can see which OS you are running on and the program open and connected).&lt;br /&gt;
## textEditor.jpg - a screenshot that shows you editing the aboutMySystem.txt file with your text editor.&lt;br /&gt;
## fileTransfer.jpg - a screenshot that shows you using the file transfer program to connect to the CS server with your CS class account.&lt;br /&gt;
## terminal.jpg - a screenshot that shows you with the terminal program open and connected to the CS server with your CS class account.&lt;br /&gt;
# Use the file transfer program to connect to the CS server with your CS class account.  &lt;br /&gt;
## While connected, create a new directory in your CS class account on the CS server.  Name the new directory SystemSetup.&lt;br /&gt;
## Transfer the files you just created (aboutMySystem.txt, textEditor.jpg, fileTransfer.jpg, terminal.jpg) into the SystemSetup directory in your CS class account on the server.&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=Linux_-_System_Setup&amp;diff=851</id>
		<title>Linux - System Setup</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=Linux_-_System_Setup&amp;diff=851"/>
		<updated>2026-06-04T22:14:32Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is meant to help you get your computer ready to connect to the CS server.  &lt;br /&gt;
&lt;br /&gt;
=CS User Accounts=&lt;br /&gt;
Below we guide you through getting software setup on your computer.  In order to connect to the CS server you will also need your CS user account; see [[CS accounts]]. &lt;br /&gt;
&lt;br /&gt;
=Your Personal Computer=&lt;br /&gt;
&lt;br /&gt;
==Terminal Program==&lt;br /&gt;
A terminal program allows you to type commands to run programs and view files and folders on your computer, and allows you to do the same on a remote computer (i.e., the CS server) after you have connected to it.&lt;br /&gt;
&lt;br /&gt;
Any current computer (Windows, Mac, Linux, Chrome) has a terminal program builtin. You just need to know how to start it. For each OS, here is what you need to do...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - the first time you connect to the CS server with a terminal or file transfer program, you will be notified that the identity of cs.indstate.edu cannot be verified, an ECDSA key will be displayed, and you will be asked if you still want to connect.  Type or click yes.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Windows&#039;&#039;&#039; - use the command prompt or powershell. To use the command prompt, click the Start button (at the bottom of your screen, in the middle or the left normally), start typing either &amp;quot;command&amp;quot; or &amp;quot;cmd&amp;quot; and you should see the option to run &amp;quot;Cmd.exe&amp;quot; or &amp;quot;Command Prompt&amp;quot;. To use the PowerShell, do the same (click the Start button) but start typing &amp;quot;Power Shell&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;Mac OS&#039;&#039;&#039; - use the Terminal program. To use the built-in Terminal program, use Spotlight (hold down the command key and press spacebar) and type in &amp;quot;Terminal&amp;quot;. You should see the Terminal program to click on. You can also start Terminal by clicking on the Apps icon in the Dock, and start typing &amp;quot;Terminal&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;Linux&#039;&#039;&#039; - this depends on the distribution you are using. Some use the name &amp;quot;terminal&amp;quot; for this program, and some use the name &amp;quot;shell&amp;quot;. For Ubuntu Linux with the default user interface (Gnome), you can click on the button in the bottom left (or press the Start key on your keyboard) and then start typing &amp;quot;Terminal&amp;quot; or &amp;quot;Shell&amp;quot;. You can also directly open the terminal by holding down the control-alt-t keys.&lt;br /&gt;
* &#039;&#039;&#039;Chrome&#039;&#039;&#039; - you need to first need to enable the &amp;quot;Linux development environment&amp;quot;. Click on the G or Chrome button (in the bottom left), click on Settings, in the settings click on &amp;quot;About ChromeOS&amp;quot; on the bottom, and find the &amp;quot;Developers&amp;quot; section, then click on &amp;quot;Set up&amp;quot; for the Linux development environment, then click through the setup process (you can leave default values for everything). Once you have this complete, you can start the terminal by clicking on the G or Chrome button (in the bottom left), start typing &amp;quot;Terminal&amp;quot; and click on it. You will see a Linux section and click on the first entry to start the terminal.&lt;br /&gt;
&lt;br /&gt;
==File Transfer Program==&lt;br /&gt;
You will eventually need to transfer files between your personal computer and the CS server. &lt;br /&gt;
* All current OSes include a text-based file transfer program as part of the terminal (see above for starting a terminal). Once you have a terminal open, you use the command &amp;quot;sftp&amp;quot; to start the secure ftp program.&lt;br /&gt;
* [https://filezilla-project.org/download.php?type=client FileZilla] is a graphical file transfer program that can be installed on any current OS. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - the first time you connect to the CS server with a terminal or file transfer program, you may be notified that the identity of cs.indstate.edu cannot be verified, an ECDSA key will be displayed, and you will be asked if you still want to connect.  Type or click yes.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - make sure to choose &amp;quot;sftp&amp;quot; as opposed to &amp;quot;ftp&amp;quot; when connecting.  ftp is not encrypted and is disabled on the CS server (it will not work).  sftp is encrypted and is what we use.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Text Editor==&lt;br /&gt;
Note that while you are using a terminal that is connected to the CS server you can use text-based editors - nano, emacs, vim, jove (see [[Linux Terminal - Text Editors]] for more on how to get started with these).  You will eventually want to have a good text editor on your personal computer. &lt;br /&gt;
&lt;br /&gt;
The following are four good options that are cross-platform - can be installed on Mac, Windows, Linux, and Chromebook.  If you already use some other option (e.g., Visual Studio Code, Eclipse, Notepad++, or anything else that is used by programmers) feel free to keep using what you are already using.  Note that Word is &#039;&#039;not&#039;&#039; a text editor - it does not store files in plain text, which is what is needed for programming.&lt;br /&gt;
* [https://code.visualstudio.com/ VS Code] - one of the most popular (as of 2026) with a lot of available add-ons.&lt;br /&gt;
* [https://www.vim.org/download.php Vim] - is normally already installed by default on Linux. Follow the instructions if on a different OS.&lt;br /&gt;
* [https://www.gnu.org/software/emacs/ Emacs] - used by Jeff Kinne, click your OS and follow the instructions. The graphical version uses all the same keyboard shortcuts as the text-based version that you can also use in the terminal. Note that for Chrome OS, you will first start a Terminal (see above) and then run the command &amp;lt;code&amp;gt;sudo apt-get install emacs&amp;lt;/code&amp;gt; and answer Y when it asks if you want to install it.&lt;br /&gt;
* Other cross-platform editors that students and faculty have used - [https://kate-editor.org/get-it/ Kate],[https://www.sublimetext.com/ Submlime]&lt;br /&gt;
* You might also choose to use an Integrated Development Environment (IDE). Those have a bit of a learning curve, but if you have used one before you can use it for CS coursework as well.&lt;br /&gt;
&lt;br /&gt;
When starting a new text editor do an internet search for a tutorial to get you started; once you are comfortable with the basics do an internet search for a cheat sheet of keyboard shortcuts to help you remember them.&lt;br /&gt;
&lt;br /&gt;
==GUI Programs X-Windows==&lt;br /&gt;
To run a GUI program while connected to the server, you will need to be running an X11 client on your local computer and have it running when connect to the server. Some further details depending on your operating system.&lt;br /&gt;
* MacOS - install [https://www.xquartz.org/ XQuartz] and run it.&lt;br /&gt;
* Windows - install [https://x.cygwin.com/ Cygwin/X] ([https://x.cygwin.com/docs/ug/setup.html#setup-cygwin-x-installing installation]) and run it. Or, euse the [https://learn.microsoft.com/en-us/windows/wsl/install Windows Subsystem for Linux] (WSL).&lt;br /&gt;
* Linux - do not need to install anything extra.&lt;br /&gt;
&lt;br /&gt;
Once you have your X11 client installed, open it, and then connect to the CS server using the -Y switch in your ssh command: &amp;lt;pre&amp;gt;ssh -Y username@cs.indstate.edu&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To verify everything is working try running in your terminal xcalc: &amp;lt;pre&amp;gt;xcalc&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Sample HW=&lt;br /&gt;
The following might be used by your instructor as part of a HW assignment to verify you have your computer setup properly.&lt;br /&gt;
&lt;br /&gt;
# Follow the steps above to setup your computer with a file transfer program, text editor, and terminal program.  Make sure you are able to use the file transfer program and terminal programs to connect to your CS class account on the CS server.&lt;br /&gt;
# Make sure you can open the text editor. Create a text file aboutMySystem.txt and put the following information.&lt;br /&gt;
## Your name: &lt;br /&gt;
## Your CS class account: &lt;br /&gt;
## Operating System: &lt;br /&gt;
## Text editor you are using: &lt;br /&gt;
## File transfer program: &lt;br /&gt;
## Did you have any difficulties in getting the programs setup? If yes, explain.&lt;br /&gt;
# Create the following screen shots demonstrating that you have the programs installed on your system properly.  Note - you can ask the internet how to take a screenshot (e.g., type in - how to screenshot on chromebook).  For each screenshot, make the screenshot of your whole screen (so I can see which OS you are running on and the program open and connected).&lt;br /&gt;
## textEditor.jpg - a screenshot that shows you editing the aboutMySystem.txt file with your text editor.&lt;br /&gt;
## fileTransfer.jpg - a screenshot that shows you using the file transfer program to connect to the CS server with your CS class account.&lt;br /&gt;
## terminal.jpg - a screenshot that shows you with the terminal program open and connected to the CS server with your CS class account.&lt;br /&gt;
# Use the file transfer program to connect to the CS server with your CS class account.  &lt;br /&gt;
## While connected, create a new directory in your CS class account on the CS server.  Name the new directory SystemSetup.&lt;br /&gt;
## Transfer the files you just created (aboutMySystem.txt, textEditor.jpg, fileTransfer.jpg, terminal.jpg) into the SystemSetup directory in your CS class account on the server.&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=Linux_-_System_Setup&amp;diff=850</id>
		<title>Linux - System Setup</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=Linux_-_System_Setup&amp;diff=850"/>
		<updated>2026-06-04T22:14:22Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: /* Backing up Files - Rsync */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is meant to help you get your computer ready to connect to the CS server.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - this page needs updating, was last updated in 2020.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=CS User Accounts=&lt;br /&gt;
Below we guide you through getting software setup on your computer.  In order to connect to the CS server you will also need your CS user account; see [[CS accounts]]. &lt;br /&gt;
&lt;br /&gt;
=Your Personal Computer=&lt;br /&gt;
&lt;br /&gt;
==Terminal Program==&lt;br /&gt;
A terminal program allows you to type commands to run programs and view files and folders on your computer, and allows you to do the same on a remote computer (i.e., the CS server) after you have connected to it.&lt;br /&gt;
&lt;br /&gt;
Any current computer (Windows, Mac, Linux, Chrome) has a terminal program builtin. You just need to know how to start it. For each OS, here is what you need to do...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - the first time you connect to the CS server with a terminal or file transfer program, you will be notified that the identity of cs.indstate.edu cannot be verified, an ECDSA key will be displayed, and you will be asked if you still want to connect.  Type or click yes.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Windows&#039;&#039;&#039; - use the command prompt or powershell. To use the command prompt, click the Start button (at the bottom of your screen, in the middle or the left normally), start typing either &amp;quot;command&amp;quot; or &amp;quot;cmd&amp;quot; and you should see the option to run &amp;quot;Cmd.exe&amp;quot; or &amp;quot;Command Prompt&amp;quot;. To use the PowerShell, do the same (click the Start button) but start typing &amp;quot;Power Shell&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;Mac OS&#039;&#039;&#039; - use the Terminal program. To use the built-in Terminal program, use Spotlight (hold down the command key and press spacebar) and type in &amp;quot;Terminal&amp;quot;. You should see the Terminal program to click on. You can also start Terminal by clicking on the Apps icon in the Dock, and start typing &amp;quot;Terminal&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;Linux&#039;&#039;&#039; - this depends on the distribution you are using. Some use the name &amp;quot;terminal&amp;quot; for this program, and some use the name &amp;quot;shell&amp;quot;. For Ubuntu Linux with the default user interface (Gnome), you can click on the button in the bottom left (or press the Start key on your keyboard) and then start typing &amp;quot;Terminal&amp;quot; or &amp;quot;Shell&amp;quot;. You can also directly open the terminal by holding down the control-alt-t keys.&lt;br /&gt;
* &#039;&#039;&#039;Chrome&#039;&#039;&#039; - you need to first need to enable the &amp;quot;Linux development environment&amp;quot;. Click on the G or Chrome button (in the bottom left), click on Settings, in the settings click on &amp;quot;About ChromeOS&amp;quot; on the bottom, and find the &amp;quot;Developers&amp;quot; section, then click on &amp;quot;Set up&amp;quot; for the Linux development environment, then click through the setup process (you can leave default values for everything). Once you have this complete, you can start the terminal by clicking on the G or Chrome button (in the bottom left), start typing &amp;quot;Terminal&amp;quot; and click on it. You will see a Linux section and click on the first entry to start the terminal.&lt;br /&gt;
&lt;br /&gt;
==File Transfer Program==&lt;br /&gt;
You will eventually need to transfer files between your personal computer and the CS server. &lt;br /&gt;
* All current OSes include a text-based file transfer program as part of the terminal (see above for starting a terminal). Once you have a terminal open, you use the command &amp;quot;sftp&amp;quot; to start the secure ftp program.&lt;br /&gt;
* [https://filezilla-project.org/download.php?type=client FileZilla] is a graphical file transfer program that can be installed on any current OS. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - the first time you connect to the CS server with a terminal or file transfer program, you may be notified that the identity of cs.indstate.edu cannot be verified, an ECDSA key will be displayed, and you will be asked if you still want to connect.  Type or click yes.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - make sure to choose &amp;quot;sftp&amp;quot; as opposed to &amp;quot;ftp&amp;quot; when connecting.  ftp is not encrypted and is disabled on the CS server (it will not work).  sftp is encrypted and is what we use.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Text Editor==&lt;br /&gt;
Note that while you are using a terminal that is connected to the CS server you can use text-based editors - nano, emacs, vim, jove (see [[Linux Terminal - Text Editors]] for more on how to get started with these).  You will eventually want to have a good text editor on your personal computer. &lt;br /&gt;
&lt;br /&gt;
The following are four good options that are cross-platform - can be installed on Mac, Windows, Linux, and Chromebook.  If you already use some other option (e.g., Visual Studio Code, Eclipse, Notepad++, or anything else that is used by programmers) feel free to keep using what you are already using.  Note that Word is &#039;&#039;not&#039;&#039; a text editor - it does not store files in plain text, which is what is needed for programming.&lt;br /&gt;
* [https://code.visualstudio.com/ VS Code] - one of the most popular (as of 2026) with a lot of available add-ons.&lt;br /&gt;
* [https://www.vim.org/download.php Vim] - is normally already installed by default on Linux. Follow the instructions if on a different OS.&lt;br /&gt;
* [https://www.gnu.org/software/emacs/ Emacs] - used by Jeff Kinne, click your OS and follow the instructions. The graphical version uses all the same keyboard shortcuts as the text-based version that you can also use in the terminal. Note that for Chrome OS, you will first start a Terminal (see above) and then run the command &amp;lt;code&amp;gt;sudo apt-get install emacs&amp;lt;/code&amp;gt; and answer Y when it asks if you want to install it.&lt;br /&gt;
* Other cross-platform editors that students and faculty have used - [https://kate-editor.org/get-it/ Kate],[https://www.sublimetext.com/ Submlime]&lt;br /&gt;
* You might also choose to use an Integrated Development Environment (IDE). Those have a bit of a learning curve, but if you have used one before you can use it for CS coursework as well.&lt;br /&gt;
&lt;br /&gt;
When starting a new text editor do an internet search for a tutorial to get you started; once you are comfortable with the basics do an internet search for a cheat sheet of keyboard shortcuts to help you remember them.&lt;br /&gt;
&lt;br /&gt;
==GUI Programs X-Windows==&lt;br /&gt;
To run a GUI program while connected to the server, you will need to be running an X11 client on your local computer and have it running when connect to the server. Some further details depending on your operating system.&lt;br /&gt;
* MacOS - install [https://www.xquartz.org/ XQuartz] and run it.&lt;br /&gt;
* Windows - install [https://x.cygwin.com/ Cygwin/X] ([https://x.cygwin.com/docs/ug/setup.html#setup-cygwin-x-installing installation]) and run it. Or, euse the [https://learn.microsoft.com/en-us/windows/wsl/install Windows Subsystem for Linux] (WSL).&lt;br /&gt;
* Linux - do not need to install anything extra.&lt;br /&gt;
&lt;br /&gt;
Once you have your X11 client installed, open it, and then connect to the CS server using the -Y switch in your ssh command: &amp;lt;pre&amp;gt;ssh -Y username@cs.indstate.edu&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To verify everything is working try running in your terminal xcalc: &amp;lt;pre&amp;gt;xcalc&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Sample HW=&lt;br /&gt;
The following might be used by your instructor as part of a HW assignment to verify you have your computer setup properly.&lt;br /&gt;
&lt;br /&gt;
# Follow the steps above to setup your computer with a file transfer program, text editor, and terminal program.  Make sure you are able to use the file transfer program and terminal programs to connect to your CS class account on the CS server.&lt;br /&gt;
# Make sure you can open the text editor. Create a text file aboutMySystem.txt and put the following information.&lt;br /&gt;
## Your name: &lt;br /&gt;
## Your CS class account: &lt;br /&gt;
## Operating System: &lt;br /&gt;
## Text editor you are using: &lt;br /&gt;
## File transfer program: &lt;br /&gt;
## Did you have any difficulties in getting the programs setup? If yes, explain.&lt;br /&gt;
# Create the following screen shots demonstrating that you have the programs installed on your system properly.  Note - you can ask the internet how to take a screenshot (e.g., type in - how to screenshot on chromebook).  For each screenshot, make the screenshot of your whole screen (so I can see which OS you are running on and the program open and connected).&lt;br /&gt;
## textEditor.jpg - a screenshot that shows you editing the aboutMySystem.txt file with your text editor.&lt;br /&gt;
## fileTransfer.jpg - a screenshot that shows you using the file transfer program to connect to the CS server with your CS class account.&lt;br /&gt;
## terminal.jpg - a screenshot that shows you with the terminal program open and connected to the CS server with your CS class account.&lt;br /&gt;
# Use the file transfer program to connect to the CS server with your CS class account.  &lt;br /&gt;
## While connected, create a new directory in your CS class account on the CS server.  Name the new directory SystemSetup.&lt;br /&gt;
## Transfer the files you just created (aboutMySystem.txt, textEditor.jpg, fileTransfer.jpg, terminal.jpg) into the SystemSetup directory in your CS class account on the server.&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=Linux_-_System_Setup&amp;diff=849</id>
		<title>Linux - System Setup</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=Linux_-_System_Setup&amp;diff=849"/>
		<updated>2026-06-04T22:14:14Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: /* Compilers/Interpreters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is meant to help you get your computer ready to connect to the CS server.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - this page needs updating, was last updated in 2020.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=CS User Accounts=&lt;br /&gt;
Below we guide you through getting software setup on your computer.  In order to connect to the CS server you will also need your CS user account; see [[CS accounts]]. &lt;br /&gt;
&lt;br /&gt;
=Your Personal Computer=&lt;br /&gt;
&lt;br /&gt;
==Terminal Program==&lt;br /&gt;
A terminal program allows you to type commands to run programs and view files and folders on your computer, and allows you to do the same on a remote computer (i.e., the CS server) after you have connected to it.&lt;br /&gt;
&lt;br /&gt;
Any current computer (Windows, Mac, Linux, Chrome) has a terminal program builtin. You just need to know how to start it. For each OS, here is what you need to do...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - the first time you connect to the CS server with a terminal or file transfer program, you will be notified that the identity of cs.indstate.edu cannot be verified, an ECDSA key will be displayed, and you will be asked if you still want to connect.  Type or click yes.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Windows&#039;&#039;&#039; - use the command prompt or powershell. To use the command prompt, click the Start button (at the bottom of your screen, in the middle or the left normally), start typing either &amp;quot;command&amp;quot; or &amp;quot;cmd&amp;quot; and you should see the option to run &amp;quot;Cmd.exe&amp;quot; or &amp;quot;Command Prompt&amp;quot;. To use the PowerShell, do the same (click the Start button) but start typing &amp;quot;Power Shell&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;Mac OS&#039;&#039;&#039; - use the Terminal program. To use the built-in Terminal program, use Spotlight (hold down the command key and press spacebar) and type in &amp;quot;Terminal&amp;quot;. You should see the Terminal program to click on. You can also start Terminal by clicking on the Apps icon in the Dock, and start typing &amp;quot;Terminal&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;Linux&#039;&#039;&#039; - this depends on the distribution you are using. Some use the name &amp;quot;terminal&amp;quot; for this program, and some use the name &amp;quot;shell&amp;quot;. For Ubuntu Linux with the default user interface (Gnome), you can click on the button in the bottom left (or press the Start key on your keyboard) and then start typing &amp;quot;Terminal&amp;quot; or &amp;quot;Shell&amp;quot;. You can also directly open the terminal by holding down the control-alt-t keys.&lt;br /&gt;
* &#039;&#039;&#039;Chrome&#039;&#039;&#039; - you need to first need to enable the &amp;quot;Linux development environment&amp;quot;. Click on the G or Chrome button (in the bottom left), click on Settings, in the settings click on &amp;quot;About ChromeOS&amp;quot; on the bottom, and find the &amp;quot;Developers&amp;quot; section, then click on &amp;quot;Set up&amp;quot; for the Linux development environment, then click through the setup process (you can leave default values for everything). Once you have this complete, you can start the terminal by clicking on the G or Chrome button (in the bottom left), start typing &amp;quot;Terminal&amp;quot; and click on it. You will see a Linux section and click on the first entry to start the terminal.&lt;br /&gt;
&lt;br /&gt;
==File Transfer Program==&lt;br /&gt;
You will eventually need to transfer files between your personal computer and the CS server. &lt;br /&gt;
* All current OSes include a text-based file transfer program as part of the terminal (see above for starting a terminal). Once you have a terminal open, you use the command &amp;quot;sftp&amp;quot; to start the secure ftp program.&lt;br /&gt;
* [https://filezilla-project.org/download.php?type=client FileZilla] is a graphical file transfer program that can be installed on any current OS. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - the first time you connect to the CS server with a terminal or file transfer program, you may be notified that the identity of cs.indstate.edu cannot be verified, an ECDSA key will be displayed, and you will be asked if you still want to connect.  Type or click yes.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - make sure to choose &amp;quot;sftp&amp;quot; as opposed to &amp;quot;ftp&amp;quot; when connecting.  ftp is not encrypted and is disabled on the CS server (it will not work).  sftp is encrypted and is what we use.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Text Editor==&lt;br /&gt;
Note that while you are using a terminal that is connected to the CS server you can use text-based editors - nano, emacs, vim, jove (see [[Linux Terminal - Text Editors]] for more on how to get started with these).  You will eventually want to have a good text editor on your personal computer. &lt;br /&gt;
&lt;br /&gt;
The following are four good options that are cross-platform - can be installed on Mac, Windows, Linux, and Chromebook.  If you already use some other option (e.g., Visual Studio Code, Eclipse, Notepad++, or anything else that is used by programmers) feel free to keep using what you are already using.  Note that Word is &#039;&#039;not&#039;&#039; a text editor - it does not store files in plain text, which is what is needed for programming.&lt;br /&gt;
* [https://code.visualstudio.com/ VS Code] - one of the most popular (as of 2026) with a lot of available add-ons.&lt;br /&gt;
* [https://www.vim.org/download.php Vim] - is normally already installed by default on Linux. Follow the instructions if on a different OS.&lt;br /&gt;
* [https://www.gnu.org/software/emacs/ Emacs] - used by Jeff Kinne, click your OS and follow the instructions. The graphical version uses all the same keyboard shortcuts as the text-based version that you can also use in the terminal. Note that for Chrome OS, you will first start a Terminal (see above) and then run the command &amp;lt;code&amp;gt;sudo apt-get install emacs&amp;lt;/code&amp;gt; and answer Y when it asks if you want to install it.&lt;br /&gt;
* Other cross-platform editors that students and faculty have used - [https://kate-editor.org/get-it/ Kate],[https://www.sublimetext.com/ Submlime]&lt;br /&gt;
* You might also choose to use an Integrated Development Environment (IDE). Those have a bit of a learning curve, but if you have used one before you can use it for CS coursework as well.&lt;br /&gt;
&lt;br /&gt;
When starting a new text editor do an internet search for a tutorial to get you started; once you are comfortable with the basics do an internet search for a cheat sheet of keyboard shortcuts to help you remember them.&lt;br /&gt;
&lt;br /&gt;
==Backing up Files - Rsync==&lt;br /&gt;
&lt;br /&gt;
==GUI Programs X-Windows==&lt;br /&gt;
To run a GUI program while connected to the server, you will need to be running an X11 client on your local computer and have it running when connect to the server. Some further details depending on your operating system.&lt;br /&gt;
* MacOS - install [https://www.xquartz.org/ XQuartz] and run it.&lt;br /&gt;
* Windows - install [https://x.cygwin.com/ Cygwin/X] ([https://x.cygwin.com/docs/ug/setup.html#setup-cygwin-x-installing installation]) and run it. Or, euse the [https://learn.microsoft.com/en-us/windows/wsl/install Windows Subsystem for Linux] (WSL).&lt;br /&gt;
* Linux - do not need to install anything extra.&lt;br /&gt;
&lt;br /&gt;
Once you have your X11 client installed, open it, and then connect to the CS server using the -Y switch in your ssh command: &amp;lt;pre&amp;gt;ssh -Y username@cs.indstate.edu&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To verify everything is working try running in your terminal xcalc: &amp;lt;pre&amp;gt;xcalc&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Sample HW=&lt;br /&gt;
The following might be used by your instructor as part of a HW assignment to verify you have your computer setup properly.&lt;br /&gt;
&lt;br /&gt;
# Follow the steps above to setup your computer with a file transfer program, text editor, and terminal program.  Make sure you are able to use the file transfer program and terminal programs to connect to your CS class account on the CS server.&lt;br /&gt;
# Make sure you can open the text editor. Create a text file aboutMySystem.txt and put the following information.&lt;br /&gt;
## Your name: &lt;br /&gt;
## Your CS class account: &lt;br /&gt;
## Operating System: &lt;br /&gt;
## Text editor you are using: &lt;br /&gt;
## File transfer program: &lt;br /&gt;
## Did you have any difficulties in getting the programs setup? If yes, explain.&lt;br /&gt;
# Create the following screen shots demonstrating that you have the programs installed on your system properly.  Note - you can ask the internet how to take a screenshot (e.g., type in - how to screenshot on chromebook).  For each screenshot, make the screenshot of your whole screen (so I can see which OS you are running on and the program open and connected).&lt;br /&gt;
## textEditor.jpg - a screenshot that shows you editing the aboutMySystem.txt file with your text editor.&lt;br /&gt;
## fileTransfer.jpg - a screenshot that shows you using the file transfer program to connect to the CS server with your CS class account.&lt;br /&gt;
## terminal.jpg - a screenshot that shows you with the terminal program open and connected to the CS server with your CS class account.&lt;br /&gt;
# Use the file transfer program to connect to the CS server with your CS class account.  &lt;br /&gt;
## While connected, create a new directory in your CS class account on the CS server.  Name the new directory SystemSetup.&lt;br /&gt;
## Transfer the files you just created (aboutMySystem.txt, textEditor.jpg, fileTransfer.jpg, terminal.jpg) into the SystemSetup directory in your CS class account on the server.&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=Linux_-_System_Setup&amp;diff=848</id>
		<title>Linux - System Setup</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=Linux_-_System_Setup&amp;diff=848"/>
		<updated>2026-06-04T22:14:01Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: /* Other OS-Specific Notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is meant to help you get your computer ready to connect to the CS server.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - this page needs updating, was last updated in 2020.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=CS User Accounts=&lt;br /&gt;
Below we guide you through getting software setup on your computer.  In order to connect to the CS server you will also need your CS user account; see [[CS accounts]]. &lt;br /&gt;
&lt;br /&gt;
=Your Personal Computer=&lt;br /&gt;
&lt;br /&gt;
==Terminal Program==&lt;br /&gt;
A terminal program allows you to type commands to run programs and view files and folders on your computer, and allows you to do the same on a remote computer (i.e., the CS server) after you have connected to it.&lt;br /&gt;
&lt;br /&gt;
Any current computer (Windows, Mac, Linux, Chrome) has a terminal program builtin. You just need to know how to start it. For each OS, here is what you need to do...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - the first time you connect to the CS server with a terminal or file transfer program, you will be notified that the identity of cs.indstate.edu cannot be verified, an ECDSA key will be displayed, and you will be asked if you still want to connect.  Type or click yes.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Windows&#039;&#039;&#039; - use the command prompt or powershell. To use the command prompt, click the Start button (at the bottom of your screen, in the middle or the left normally), start typing either &amp;quot;command&amp;quot; or &amp;quot;cmd&amp;quot; and you should see the option to run &amp;quot;Cmd.exe&amp;quot; or &amp;quot;Command Prompt&amp;quot;. To use the PowerShell, do the same (click the Start button) but start typing &amp;quot;Power Shell&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;Mac OS&#039;&#039;&#039; - use the Terminal program. To use the built-in Terminal program, use Spotlight (hold down the command key and press spacebar) and type in &amp;quot;Terminal&amp;quot;. You should see the Terminal program to click on. You can also start Terminal by clicking on the Apps icon in the Dock, and start typing &amp;quot;Terminal&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;Linux&#039;&#039;&#039; - this depends on the distribution you are using. Some use the name &amp;quot;terminal&amp;quot; for this program, and some use the name &amp;quot;shell&amp;quot;. For Ubuntu Linux with the default user interface (Gnome), you can click on the button in the bottom left (or press the Start key on your keyboard) and then start typing &amp;quot;Terminal&amp;quot; or &amp;quot;Shell&amp;quot;. You can also directly open the terminal by holding down the control-alt-t keys.&lt;br /&gt;
* &#039;&#039;&#039;Chrome&#039;&#039;&#039; - you need to first need to enable the &amp;quot;Linux development environment&amp;quot;. Click on the G or Chrome button (in the bottom left), click on Settings, in the settings click on &amp;quot;About ChromeOS&amp;quot; on the bottom, and find the &amp;quot;Developers&amp;quot; section, then click on &amp;quot;Set up&amp;quot; for the Linux development environment, then click through the setup process (you can leave default values for everything). Once you have this complete, you can start the terminal by clicking on the G or Chrome button (in the bottom left), start typing &amp;quot;Terminal&amp;quot; and click on it. You will see a Linux section and click on the first entry to start the terminal.&lt;br /&gt;
&lt;br /&gt;
==File Transfer Program==&lt;br /&gt;
You will eventually need to transfer files between your personal computer and the CS server. &lt;br /&gt;
* All current OSes include a text-based file transfer program as part of the terminal (see above for starting a terminal). Once you have a terminal open, you use the command &amp;quot;sftp&amp;quot; to start the secure ftp program.&lt;br /&gt;
* [https://filezilla-project.org/download.php?type=client FileZilla] is a graphical file transfer program that can be installed on any current OS. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - the first time you connect to the CS server with a terminal or file transfer program, you may be notified that the identity of cs.indstate.edu cannot be verified, an ECDSA key will be displayed, and you will be asked if you still want to connect.  Type or click yes.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - make sure to choose &amp;quot;sftp&amp;quot; as opposed to &amp;quot;ftp&amp;quot; when connecting.  ftp is not encrypted and is disabled on the CS server (it will not work).  sftp is encrypted and is what we use.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Text Editor==&lt;br /&gt;
Note that while you are using a terminal that is connected to the CS server you can use text-based editors - nano, emacs, vim, jove (see [[Linux Terminal - Text Editors]] for more on how to get started with these).  You will eventually want to have a good text editor on your personal computer. &lt;br /&gt;
&lt;br /&gt;
The following are four good options that are cross-platform - can be installed on Mac, Windows, Linux, and Chromebook.  If you already use some other option (e.g., Visual Studio Code, Eclipse, Notepad++, or anything else that is used by programmers) feel free to keep using what you are already using.  Note that Word is &#039;&#039;not&#039;&#039; a text editor - it does not store files in plain text, which is what is needed for programming.&lt;br /&gt;
* [https://code.visualstudio.com/ VS Code] - one of the most popular (as of 2026) with a lot of available add-ons.&lt;br /&gt;
* [https://www.vim.org/download.php Vim] - is normally already installed by default on Linux. Follow the instructions if on a different OS.&lt;br /&gt;
* [https://www.gnu.org/software/emacs/ Emacs] - used by Jeff Kinne, click your OS and follow the instructions. The graphical version uses all the same keyboard shortcuts as the text-based version that you can also use in the terminal. Note that for Chrome OS, you will first start a Terminal (see above) and then run the command &amp;lt;code&amp;gt;sudo apt-get install emacs&amp;lt;/code&amp;gt; and answer Y when it asks if you want to install it.&lt;br /&gt;
* Other cross-platform editors that students and faculty have used - [https://kate-editor.org/get-it/ Kate],[https://www.sublimetext.com/ Submlime]&lt;br /&gt;
* You might also choose to use an Integrated Development Environment (IDE). Those have a bit of a learning curve, but if you have used one before you can use it for CS coursework as well.&lt;br /&gt;
&lt;br /&gt;
When starting a new text editor do an internet search for a tutorial to get you started; once you are comfortable with the basics do an internet search for a cheat sheet of keyboard shortcuts to help you remember them.&lt;br /&gt;
&lt;br /&gt;
==Compilers/Interpreters==&lt;br /&gt;
&lt;br /&gt;
===Python===&lt;br /&gt;
&lt;br /&gt;
===C/C++===&lt;br /&gt;
&lt;br /&gt;
==Backing up Files - Rsync==&lt;br /&gt;
&lt;br /&gt;
==GUI Programs X-Windows==&lt;br /&gt;
To run a GUI program while connected to the server, you will need to be running an X11 client on your local computer and have it running when connect to the server. Some further details depending on your operating system.&lt;br /&gt;
* MacOS - install [https://www.xquartz.org/ XQuartz] and run it.&lt;br /&gt;
* Windows - install [https://x.cygwin.com/ Cygwin/X] ([https://x.cygwin.com/docs/ug/setup.html#setup-cygwin-x-installing installation]) and run it. Or, euse the [https://learn.microsoft.com/en-us/windows/wsl/install Windows Subsystem for Linux] (WSL).&lt;br /&gt;
* Linux - do not need to install anything extra.&lt;br /&gt;
&lt;br /&gt;
Once you have your X11 client installed, open it, and then connect to the CS server using the -Y switch in your ssh command: &amp;lt;pre&amp;gt;ssh -Y username@cs.indstate.edu&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To verify everything is working try running in your terminal xcalc: &amp;lt;pre&amp;gt;xcalc&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Sample HW=&lt;br /&gt;
The following might be used by your instructor as part of a HW assignment to verify you have your computer setup properly.&lt;br /&gt;
&lt;br /&gt;
# Follow the steps above to setup your computer with a file transfer program, text editor, and terminal program.  Make sure you are able to use the file transfer program and terminal programs to connect to your CS class account on the CS server.&lt;br /&gt;
# Make sure you can open the text editor. Create a text file aboutMySystem.txt and put the following information.&lt;br /&gt;
## Your name: &lt;br /&gt;
## Your CS class account: &lt;br /&gt;
## Operating System: &lt;br /&gt;
## Text editor you are using: &lt;br /&gt;
## File transfer program: &lt;br /&gt;
## Did you have any difficulties in getting the programs setup? If yes, explain.&lt;br /&gt;
# Create the following screen shots demonstrating that you have the programs installed on your system properly.  Note - you can ask the internet how to take a screenshot (e.g., type in - how to screenshot on chromebook).  For each screenshot, make the screenshot of your whole screen (so I can see which OS you are running on and the program open and connected).&lt;br /&gt;
## textEditor.jpg - a screenshot that shows you editing the aboutMySystem.txt file with your text editor.&lt;br /&gt;
## fileTransfer.jpg - a screenshot that shows you using the file transfer program to connect to the CS server with your CS class account.&lt;br /&gt;
## terminal.jpg - a screenshot that shows you with the terminal program open and connected to the CS server with your CS class account.&lt;br /&gt;
# Use the file transfer program to connect to the CS server with your CS class account.  &lt;br /&gt;
## While connected, create a new directory in your CS class account on the CS server.  Name the new directory SystemSetup.&lt;br /&gt;
## Transfer the files you just created (aboutMySystem.txt, textEditor.jpg, fileTransfer.jpg, terminal.jpg) into the SystemSetup directory in your CS class account on the server.&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=Linux_-_System_Setup&amp;diff=847</id>
		<title>Linux - System Setup</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=Linux_-_System_Setup&amp;diff=847"/>
		<updated>2026-06-04T22:13:42Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: /* Chromebook */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is meant to help you get your computer ready to connect to the CS server.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - this page needs updating, was last updated in 2020.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=CS User Accounts=&lt;br /&gt;
Below we guide you through getting software setup on your computer.  In order to connect to the CS server you will also need your CS user account; see [[CS accounts]]. &lt;br /&gt;
&lt;br /&gt;
=Your Personal Computer=&lt;br /&gt;
&lt;br /&gt;
==Terminal Program==&lt;br /&gt;
A terminal program allows you to type commands to run programs and view files and folders on your computer, and allows you to do the same on a remote computer (i.e., the CS server) after you have connected to it.&lt;br /&gt;
&lt;br /&gt;
Any current computer (Windows, Mac, Linux, Chrome) has a terminal program builtin. You just need to know how to start it. For each OS, here is what you need to do...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - the first time you connect to the CS server with a terminal or file transfer program, you will be notified that the identity of cs.indstate.edu cannot be verified, an ECDSA key will be displayed, and you will be asked if you still want to connect.  Type or click yes.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Windows&#039;&#039;&#039; - use the command prompt or powershell. To use the command prompt, click the Start button (at the bottom of your screen, in the middle or the left normally), start typing either &amp;quot;command&amp;quot; or &amp;quot;cmd&amp;quot; and you should see the option to run &amp;quot;Cmd.exe&amp;quot; or &amp;quot;Command Prompt&amp;quot;. To use the PowerShell, do the same (click the Start button) but start typing &amp;quot;Power Shell&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;Mac OS&#039;&#039;&#039; - use the Terminal program. To use the built-in Terminal program, use Spotlight (hold down the command key and press spacebar) and type in &amp;quot;Terminal&amp;quot;. You should see the Terminal program to click on. You can also start Terminal by clicking on the Apps icon in the Dock, and start typing &amp;quot;Terminal&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;Linux&#039;&#039;&#039; - this depends on the distribution you are using. Some use the name &amp;quot;terminal&amp;quot; for this program, and some use the name &amp;quot;shell&amp;quot;. For Ubuntu Linux with the default user interface (Gnome), you can click on the button in the bottom left (or press the Start key on your keyboard) and then start typing &amp;quot;Terminal&amp;quot; or &amp;quot;Shell&amp;quot;. You can also directly open the terminal by holding down the control-alt-t keys.&lt;br /&gt;
* &#039;&#039;&#039;Chrome&#039;&#039;&#039; - you need to first need to enable the &amp;quot;Linux development environment&amp;quot;. Click on the G or Chrome button (in the bottom left), click on Settings, in the settings click on &amp;quot;About ChromeOS&amp;quot; on the bottom, and find the &amp;quot;Developers&amp;quot; section, then click on &amp;quot;Set up&amp;quot; for the Linux development environment, then click through the setup process (you can leave default values for everything). Once you have this complete, you can start the terminal by clicking on the G or Chrome button (in the bottom left), start typing &amp;quot;Terminal&amp;quot; and click on it. You will see a Linux section and click on the first entry to start the terminal.&lt;br /&gt;
&lt;br /&gt;
==File Transfer Program==&lt;br /&gt;
You will eventually need to transfer files between your personal computer and the CS server. &lt;br /&gt;
* All current OSes include a text-based file transfer program as part of the terminal (see above for starting a terminal). Once you have a terminal open, you use the command &amp;quot;sftp&amp;quot; to start the secure ftp program.&lt;br /&gt;
* [https://filezilla-project.org/download.php?type=client FileZilla] is a graphical file transfer program that can be installed on any current OS. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - the first time you connect to the CS server with a terminal or file transfer program, you may be notified that the identity of cs.indstate.edu cannot be verified, an ECDSA key will be displayed, and you will be asked if you still want to connect.  Type or click yes.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - make sure to choose &amp;quot;sftp&amp;quot; as opposed to &amp;quot;ftp&amp;quot; when connecting.  ftp is not encrypted and is disabled on the CS server (it will not work).  sftp is encrypted and is what we use.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Text Editor==&lt;br /&gt;
Note that while you are using a terminal that is connected to the CS server you can use text-based editors - nano, emacs, vim, jove (see [[Linux Terminal - Text Editors]] for more on how to get started with these).  You will eventually want to have a good text editor on your personal computer. &lt;br /&gt;
&lt;br /&gt;
The following are four good options that are cross-platform - can be installed on Mac, Windows, Linux, and Chromebook.  If you already use some other option (e.g., Visual Studio Code, Eclipse, Notepad++, or anything else that is used by programmers) feel free to keep using what you are already using.  Note that Word is &#039;&#039;not&#039;&#039; a text editor - it does not store files in plain text, which is what is needed for programming.&lt;br /&gt;
* [https://code.visualstudio.com/ VS Code] - one of the most popular (as of 2026) with a lot of available add-ons.&lt;br /&gt;
* [https://www.vim.org/download.php Vim] - is normally already installed by default on Linux. Follow the instructions if on a different OS.&lt;br /&gt;
* [https://www.gnu.org/software/emacs/ Emacs] - used by Jeff Kinne, click your OS and follow the instructions. The graphical version uses all the same keyboard shortcuts as the text-based version that you can also use in the terminal. Note that for Chrome OS, you will first start a Terminal (see above) and then run the command &amp;lt;code&amp;gt;sudo apt-get install emacs&amp;lt;/code&amp;gt; and answer Y when it asks if you want to install it.&lt;br /&gt;
* Other cross-platform editors that students and faculty have used - [https://kate-editor.org/get-it/ Kate],[https://www.sublimetext.com/ Submlime]&lt;br /&gt;
* You might also choose to use an Integrated Development Environment (IDE). Those have a bit of a learning curve, but if you have used one before you can use it for CS coursework as well.&lt;br /&gt;
&lt;br /&gt;
When starting a new text editor do an internet search for a tutorial to get you started; once you are comfortable with the basics do an internet search for a cheat sheet of keyboard shortcuts to help you remember them.&lt;br /&gt;
&lt;br /&gt;
==Other OS-Specific Notes==&lt;br /&gt;
If you are using Windows and have Putty installed as your terminal program, it installs a text-based file transfer program as well - psftp - which you should be able to find in your list of programs.  &lt;br /&gt;
&lt;br /&gt;
If you are using MacOS or Linux, a text-based file transfer program - sftp - is normally installed by default.&lt;br /&gt;
&lt;br /&gt;
In either case, new users often prefer to use graphical file transfer programs (those mentioned above).&lt;br /&gt;
&lt;br /&gt;
For the text-based sftp programs, the basic commands you will need.&lt;br /&gt;
* ls, cd, pwd - show you the files on the server and change directories on the server.&lt;br /&gt;
* lls, lcd, lpwd - show you the files on your computer and change directories on your computer.&lt;br /&gt;
* put - send a file from your computer to the server (from your current directory on your computer, to the current directory on the server).&lt;br /&gt;
* get - download a file from the server to your computer&lt;br /&gt;
* quit&lt;br /&gt;
&lt;br /&gt;
==Compilers/Interpreters==&lt;br /&gt;
&lt;br /&gt;
===Python===&lt;br /&gt;
&lt;br /&gt;
===C/C++===&lt;br /&gt;
&lt;br /&gt;
==Backing up Files - Rsync==&lt;br /&gt;
&lt;br /&gt;
==GUI Programs X-Windows==&lt;br /&gt;
To run a GUI program while connected to the server, you will need to be running an X11 client on your local computer and have it running when connect to the server. Some further details depending on your operating system.&lt;br /&gt;
* MacOS - install [https://www.xquartz.org/ XQuartz] and run it.&lt;br /&gt;
* Windows - install [https://x.cygwin.com/ Cygwin/X] ([https://x.cygwin.com/docs/ug/setup.html#setup-cygwin-x-installing installation]) and run it. Or, euse the [https://learn.microsoft.com/en-us/windows/wsl/install Windows Subsystem for Linux] (WSL).&lt;br /&gt;
* Linux - do not need to install anything extra.&lt;br /&gt;
&lt;br /&gt;
Once you have your X11 client installed, open it, and then connect to the CS server using the -Y switch in your ssh command: &amp;lt;pre&amp;gt;ssh -Y username@cs.indstate.edu&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To verify everything is working try running in your terminal xcalc: &amp;lt;pre&amp;gt;xcalc&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Sample HW=&lt;br /&gt;
The following might be used by your instructor as part of a HW assignment to verify you have your computer setup properly.&lt;br /&gt;
&lt;br /&gt;
# Follow the steps above to setup your computer with a file transfer program, text editor, and terminal program.  Make sure you are able to use the file transfer program and terminal programs to connect to your CS class account on the CS server.&lt;br /&gt;
# Make sure you can open the text editor. Create a text file aboutMySystem.txt and put the following information.&lt;br /&gt;
## Your name: &lt;br /&gt;
## Your CS class account: &lt;br /&gt;
## Operating System: &lt;br /&gt;
## Text editor you are using: &lt;br /&gt;
## File transfer program: &lt;br /&gt;
## Did you have any difficulties in getting the programs setup? If yes, explain.&lt;br /&gt;
# Create the following screen shots demonstrating that you have the programs installed on your system properly.  Note - you can ask the internet how to take a screenshot (e.g., type in - how to screenshot on chromebook).  For each screenshot, make the screenshot of your whole screen (so I can see which OS you are running on and the program open and connected).&lt;br /&gt;
## textEditor.jpg - a screenshot that shows you editing the aboutMySystem.txt file with your text editor.&lt;br /&gt;
## fileTransfer.jpg - a screenshot that shows you using the file transfer program to connect to the CS server with your CS class account.&lt;br /&gt;
## terminal.jpg - a screenshot that shows you with the terminal program open and connected to the CS server with your CS class account.&lt;br /&gt;
# Use the file transfer program to connect to the CS server with your CS class account.  &lt;br /&gt;
## While connected, create a new directory in your CS class account on the CS server.  Name the new directory SystemSetup.&lt;br /&gt;
## Transfer the files you just created (aboutMySystem.txt, textEditor.jpg, fileTransfer.jpg, terminal.jpg) into the SystemSetup directory in your CS class account on the server.&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=Linux_-_System_Setup&amp;diff=846</id>
		<title>Linux - System Setup</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=Linux_-_System_Setup&amp;diff=846"/>
		<updated>2026-06-04T22:13:27Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: /* Installing for Linux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is meant to help you get your computer ready to connect to the CS server.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - this page needs updating, was last updated in 2020.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=CS User Accounts=&lt;br /&gt;
Below we guide you through getting software setup on your computer.  In order to connect to the CS server you will also need your CS user account; see [[CS accounts]]. &lt;br /&gt;
&lt;br /&gt;
=Your Personal Computer=&lt;br /&gt;
&lt;br /&gt;
==Terminal Program==&lt;br /&gt;
A terminal program allows you to type commands to run programs and view files and folders on your computer, and allows you to do the same on a remote computer (i.e., the CS server) after you have connected to it.&lt;br /&gt;
&lt;br /&gt;
Any current computer (Windows, Mac, Linux, Chrome) has a terminal program builtin. You just need to know how to start it. For each OS, here is what you need to do...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - the first time you connect to the CS server with a terminal or file transfer program, you will be notified that the identity of cs.indstate.edu cannot be verified, an ECDSA key will be displayed, and you will be asked if you still want to connect.  Type or click yes.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Windows&#039;&#039;&#039; - use the command prompt or powershell. To use the command prompt, click the Start button (at the bottom of your screen, in the middle or the left normally), start typing either &amp;quot;command&amp;quot; or &amp;quot;cmd&amp;quot; and you should see the option to run &amp;quot;Cmd.exe&amp;quot; or &amp;quot;Command Prompt&amp;quot;. To use the PowerShell, do the same (click the Start button) but start typing &amp;quot;Power Shell&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;Mac OS&#039;&#039;&#039; - use the Terminal program. To use the built-in Terminal program, use Spotlight (hold down the command key and press spacebar) and type in &amp;quot;Terminal&amp;quot;. You should see the Terminal program to click on. You can also start Terminal by clicking on the Apps icon in the Dock, and start typing &amp;quot;Terminal&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;Linux&#039;&#039;&#039; - this depends on the distribution you are using. Some use the name &amp;quot;terminal&amp;quot; for this program, and some use the name &amp;quot;shell&amp;quot;. For Ubuntu Linux with the default user interface (Gnome), you can click on the button in the bottom left (or press the Start key on your keyboard) and then start typing &amp;quot;Terminal&amp;quot; or &amp;quot;Shell&amp;quot;. You can also directly open the terminal by holding down the control-alt-t keys.&lt;br /&gt;
* &#039;&#039;&#039;Chrome&#039;&#039;&#039; - you need to first need to enable the &amp;quot;Linux development environment&amp;quot;. Click on the G or Chrome button (in the bottom left), click on Settings, in the settings click on &amp;quot;About ChromeOS&amp;quot; on the bottom, and find the &amp;quot;Developers&amp;quot; section, then click on &amp;quot;Set up&amp;quot; for the Linux development environment, then click through the setup process (you can leave default values for everything). Once you have this complete, you can start the terminal by clicking on the G or Chrome button (in the bottom left), start typing &amp;quot;Terminal&amp;quot; and click on it. You will see a Linux section and click on the first entry to start the terminal.&lt;br /&gt;
&lt;br /&gt;
==File Transfer Program==&lt;br /&gt;
You will eventually need to transfer files between your personal computer and the CS server. &lt;br /&gt;
* All current OSes include a text-based file transfer program as part of the terminal (see above for starting a terminal). Once you have a terminal open, you use the command &amp;quot;sftp&amp;quot; to start the secure ftp program.&lt;br /&gt;
* [https://filezilla-project.org/download.php?type=client FileZilla] is a graphical file transfer program that can be installed on any current OS. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - the first time you connect to the CS server with a terminal or file transfer program, you may be notified that the identity of cs.indstate.edu cannot be verified, an ECDSA key will be displayed, and you will be asked if you still want to connect.  Type or click yes.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - make sure to choose &amp;quot;sftp&amp;quot; as opposed to &amp;quot;ftp&amp;quot; when connecting.  ftp is not encrypted and is disabled on the CS server (it will not work).  sftp is encrypted and is what we use.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Text Editor==&lt;br /&gt;
Note that while you are using a terminal that is connected to the CS server you can use text-based editors - nano, emacs, vim, jove (see [[Linux Terminal - Text Editors]] for more on how to get started with these).  You will eventually want to have a good text editor on your personal computer. &lt;br /&gt;
&lt;br /&gt;
The following are four good options that are cross-platform - can be installed on Mac, Windows, Linux, and Chromebook.  If you already use some other option (e.g., Visual Studio Code, Eclipse, Notepad++, or anything else that is used by programmers) feel free to keep using what you are already using.  Note that Word is &#039;&#039;not&#039;&#039; a text editor - it does not store files in plain text, which is what is needed for programming.&lt;br /&gt;
* [https://code.visualstudio.com/ VS Code] - one of the most popular (as of 2026) with a lot of available add-ons.&lt;br /&gt;
* [https://www.vim.org/download.php Vim] - is normally already installed by default on Linux. Follow the instructions if on a different OS.&lt;br /&gt;
* [https://www.gnu.org/software/emacs/ Emacs] - used by Jeff Kinne, click your OS and follow the instructions. The graphical version uses all the same keyboard shortcuts as the text-based version that you can also use in the terminal. Note that for Chrome OS, you will first start a Terminal (see above) and then run the command &amp;lt;code&amp;gt;sudo apt-get install emacs&amp;lt;/code&amp;gt; and answer Y when it asks if you want to install it.&lt;br /&gt;
* Other cross-platform editors that students and faculty have used - [https://kate-editor.org/get-it/ Kate],[https://www.sublimetext.com/ Submlime]&lt;br /&gt;
* You might also choose to use an Integrated Development Environment (IDE). Those have a bit of a learning curve, but if you have used one before you can use it for CS coursework as well.&lt;br /&gt;
&lt;br /&gt;
When starting a new text editor do an internet search for a tutorial to get you started; once you are comfortable with the basics do an internet search for a cheat sheet of keyboard shortcuts to help you remember them.&lt;br /&gt;
&lt;br /&gt;
==Chromebook==&lt;br /&gt;
On Chromebook you can choose whether to install apps and do all of your work connected to the CS server, or install Linux on your Chromebook and then use the instructions above on installing the programs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Using apps&#039;&#039;&#039; - Install the following apps.&lt;br /&gt;
* &#039;&#039;Text Editor&#039;&#039; - [https://chrome.google.com/webstore/detail/text/mmfbcljfglbokpmkimbfghdkjmjhdgbg?hl=en Text]&lt;br /&gt;
* &#039;&#039;Terminal Program&#039;&#039; - [https://chrome.google.com/webstore/detail/secure-shell-app/pnhechapfaindjhompbnflcldabbghjo Secure Shell]&lt;br /&gt;
* &#039;&#039;File Transfer Program&#039;&#039; - use the builtin Files app along with the Secure Shell app, configure as follows.&lt;br /&gt;
** Open the Files app.&lt;br /&gt;
** Click on the triple-dots in the upper right of the Files app, click Add new service, click Secure Shell App.&lt;br /&gt;
** On the Secure Shell App screen that comes up, enter your login information with cs.indstate.edu as the server and 22 as the port.  Then click SFTP Mount.&lt;br /&gt;
** Go back to the Files app and you will see LOGIN@cs.indstate.edu:22 as an option on the left.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Linux (Beta) on Chromebook&#039;&#039;&#039;&lt;br /&gt;
* Not all chromebooks allow installation of Linux (Beta).  If this works then you will have Linux installed on your Chromebook and will be able to use any of the commands that you use on the CS server.&lt;br /&gt;
* Follow [https://support.google.com/chromebook/answer/9145439?hl=en instructions from google].&lt;br /&gt;
* Note - installation could take a very long time (e.g., an hour or more).  If installation fails you may need to select Remove Linux Beta and try again.&lt;br /&gt;
* Once installation is complete you open a terminal using the Terminal app.  To install the programs mentioned on this page follow the instructions above for Linux (using the APT package manager commands).&lt;br /&gt;
* After the programs are installed you can open them by typing the command in the Terminal or by opening them as apps.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Copy/paste&#039;&#039;&#039; - in either the Secure Shell app or the Terminal app, copy/paste as follows.  To copy, simply select text with the mouse and it will be copied to the clipboard.  To paste, do a triple-click (three finger click).&lt;br /&gt;
&lt;br /&gt;
==Other OS-Specific Notes==&lt;br /&gt;
If you are using Windows and have Putty installed as your terminal program, it installs a text-based file transfer program as well - psftp - which you should be able to find in your list of programs.  &lt;br /&gt;
&lt;br /&gt;
If you are using MacOS or Linux, a text-based file transfer program - sftp - is normally installed by default.&lt;br /&gt;
&lt;br /&gt;
In either case, new users often prefer to use graphical file transfer programs (those mentioned above).&lt;br /&gt;
&lt;br /&gt;
For the text-based sftp programs, the basic commands you will need.&lt;br /&gt;
* ls, cd, pwd - show you the files on the server and change directories on the server.&lt;br /&gt;
* lls, lcd, lpwd - show you the files on your computer and change directories on your computer.&lt;br /&gt;
* put - send a file from your computer to the server (from your current directory on your computer, to the current directory on the server).&lt;br /&gt;
* get - download a file from the server to your computer&lt;br /&gt;
* quit&lt;br /&gt;
&lt;br /&gt;
==Compilers/Interpreters==&lt;br /&gt;
&lt;br /&gt;
===Python===&lt;br /&gt;
&lt;br /&gt;
===C/C++===&lt;br /&gt;
&lt;br /&gt;
==Backing up Files - Rsync==&lt;br /&gt;
&lt;br /&gt;
==GUI Programs X-Windows==&lt;br /&gt;
To run a GUI program while connected to the server, you will need to be running an X11 client on your local computer and have it running when connect to the server. Some further details depending on your operating system.&lt;br /&gt;
* MacOS - install [https://www.xquartz.org/ XQuartz] and run it.&lt;br /&gt;
* Windows - install [https://x.cygwin.com/ Cygwin/X] ([https://x.cygwin.com/docs/ug/setup.html#setup-cygwin-x-installing installation]) and run it. Or, euse the [https://learn.microsoft.com/en-us/windows/wsl/install Windows Subsystem for Linux] (WSL).&lt;br /&gt;
* Linux - do not need to install anything extra.&lt;br /&gt;
&lt;br /&gt;
Once you have your X11 client installed, open it, and then connect to the CS server using the -Y switch in your ssh command: &amp;lt;pre&amp;gt;ssh -Y username@cs.indstate.edu&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To verify everything is working try running in your terminal xcalc: &amp;lt;pre&amp;gt;xcalc&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Sample HW=&lt;br /&gt;
The following might be used by your instructor as part of a HW assignment to verify you have your computer setup properly.&lt;br /&gt;
&lt;br /&gt;
# Follow the steps above to setup your computer with a file transfer program, text editor, and terminal program.  Make sure you are able to use the file transfer program and terminal programs to connect to your CS class account on the CS server.&lt;br /&gt;
# Make sure you can open the text editor. Create a text file aboutMySystem.txt and put the following information.&lt;br /&gt;
## Your name: &lt;br /&gt;
## Your CS class account: &lt;br /&gt;
## Operating System: &lt;br /&gt;
## Text editor you are using: &lt;br /&gt;
## File transfer program: &lt;br /&gt;
## Did you have any difficulties in getting the programs setup? If yes, explain.&lt;br /&gt;
# Create the following screen shots demonstrating that you have the programs installed on your system properly.  Note - you can ask the internet how to take a screenshot (e.g., type in - how to screenshot on chromebook).  For each screenshot, make the screenshot of your whole screen (so I can see which OS you are running on and the program open and connected).&lt;br /&gt;
## textEditor.jpg - a screenshot that shows you editing the aboutMySystem.txt file with your text editor.&lt;br /&gt;
## fileTransfer.jpg - a screenshot that shows you using the file transfer program to connect to the CS server with your CS class account.&lt;br /&gt;
## terminal.jpg - a screenshot that shows you with the terminal program open and connected to the CS server with your CS class account.&lt;br /&gt;
# Use the file transfer program to connect to the CS server with your CS class account.  &lt;br /&gt;
## While connected, create a new directory in your CS class account on the CS server.  Name the new directory SystemSetup.&lt;br /&gt;
## Transfer the files you just created (aboutMySystem.txt, textEditor.jpg, fileTransfer.jpg, terminal.jpg) into the SystemSetup directory in your CS class account on the server.&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=Linux_-_System_Setup&amp;diff=845</id>
		<title>Linux - System Setup</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=Linux_-_System_Setup&amp;diff=845"/>
		<updated>2026-06-04T21:50:00Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: /* Text Editor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is meant to help you get your computer ready to connect to the CS server.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - this page needs updating, was last updated in 2020.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=CS User Accounts=&lt;br /&gt;
Below we guide you through getting software setup on your computer.  In order to connect to the CS server you will also need your CS user account; see [[CS accounts]]. &lt;br /&gt;
&lt;br /&gt;
=Your Personal Computer=&lt;br /&gt;
&lt;br /&gt;
==Terminal Program==&lt;br /&gt;
A terminal program allows you to type commands to run programs and view files and folders on your computer, and allows you to do the same on a remote computer (i.e., the CS server) after you have connected to it.&lt;br /&gt;
&lt;br /&gt;
Any current computer (Windows, Mac, Linux, Chrome) has a terminal program builtin. You just need to know how to start it. For each OS, here is what you need to do...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - the first time you connect to the CS server with a terminal or file transfer program, you will be notified that the identity of cs.indstate.edu cannot be verified, an ECDSA key will be displayed, and you will be asked if you still want to connect.  Type or click yes.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Windows&#039;&#039;&#039; - use the command prompt or powershell. To use the command prompt, click the Start button (at the bottom of your screen, in the middle or the left normally), start typing either &amp;quot;command&amp;quot; or &amp;quot;cmd&amp;quot; and you should see the option to run &amp;quot;Cmd.exe&amp;quot; or &amp;quot;Command Prompt&amp;quot;. To use the PowerShell, do the same (click the Start button) but start typing &amp;quot;Power Shell&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;Mac OS&#039;&#039;&#039; - use the Terminal program. To use the built-in Terminal program, use Spotlight (hold down the command key and press spacebar) and type in &amp;quot;Terminal&amp;quot;. You should see the Terminal program to click on. You can also start Terminal by clicking on the Apps icon in the Dock, and start typing &amp;quot;Terminal&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;Linux&#039;&#039;&#039; - this depends on the distribution you are using. Some use the name &amp;quot;terminal&amp;quot; for this program, and some use the name &amp;quot;shell&amp;quot;. For Ubuntu Linux with the default user interface (Gnome), you can click on the button in the bottom left (or press the Start key on your keyboard) and then start typing &amp;quot;Terminal&amp;quot; or &amp;quot;Shell&amp;quot;. You can also directly open the terminal by holding down the control-alt-t keys.&lt;br /&gt;
* &#039;&#039;&#039;Chrome&#039;&#039;&#039; - you need to first need to enable the &amp;quot;Linux development environment&amp;quot;. Click on the G or Chrome button (in the bottom left), click on Settings, in the settings click on &amp;quot;About ChromeOS&amp;quot; on the bottom, and find the &amp;quot;Developers&amp;quot; section, then click on &amp;quot;Set up&amp;quot; for the Linux development environment, then click through the setup process (you can leave default values for everything). Once you have this complete, you can start the terminal by clicking on the G or Chrome button (in the bottom left), start typing &amp;quot;Terminal&amp;quot; and click on it. You will see a Linux section and click on the first entry to start the terminal.&lt;br /&gt;
&lt;br /&gt;
==File Transfer Program==&lt;br /&gt;
You will eventually need to transfer files between your personal computer and the CS server. &lt;br /&gt;
* All current OSes include a text-based file transfer program as part of the terminal (see above for starting a terminal). Once you have a terminal open, you use the command &amp;quot;sftp&amp;quot; to start the secure ftp program.&lt;br /&gt;
* [https://filezilla-project.org/download.php?type=client FileZilla] is a graphical file transfer program that can be installed on any current OS. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - the first time you connect to the CS server with a terminal or file transfer program, you may be notified that the identity of cs.indstate.edu cannot be verified, an ECDSA key will be displayed, and you will be asked if you still want to connect.  Type or click yes.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - make sure to choose &amp;quot;sftp&amp;quot; as opposed to &amp;quot;ftp&amp;quot; when connecting.  ftp is not encrypted and is disabled on the CS server (it will not work).  sftp is encrypted and is what we use.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Text Editor==&lt;br /&gt;
Note that while you are using a terminal that is connected to the CS server you can use text-based editors - nano, emacs, vim, jove (see [[Linux Terminal - Text Editors]] for more on how to get started with these).  You will eventually want to have a good text editor on your personal computer. &lt;br /&gt;
&lt;br /&gt;
The following are four good options that are cross-platform - can be installed on Mac, Windows, Linux, and Chromebook.  If you already use some other option (e.g., Visual Studio Code, Eclipse, Notepad++, or anything else that is used by programmers) feel free to keep using what you are already using.  Note that Word is &#039;&#039;not&#039;&#039; a text editor - it does not store files in plain text, which is what is needed for programming.&lt;br /&gt;
* [https://code.visualstudio.com/ VS Code] - one of the most popular (as of 2026) with a lot of available add-ons.&lt;br /&gt;
* [https://www.vim.org/download.php Vim] - is normally already installed by default on Linux. Follow the instructions if on a different OS.&lt;br /&gt;
* [https://www.gnu.org/software/emacs/ Emacs] - used by Jeff Kinne, click your OS and follow the instructions. The graphical version uses all the same keyboard shortcuts as the text-based version that you can also use in the terminal. Note that for Chrome OS, you will first start a Terminal (see above) and then run the command &amp;lt;code&amp;gt;sudo apt-get install emacs&amp;lt;/code&amp;gt; and answer Y when it asks if you want to install it.&lt;br /&gt;
* Other cross-platform editors that students and faculty have used - [https://kate-editor.org/get-it/ Kate],[https://www.sublimetext.com/ Submlime]&lt;br /&gt;
* You might also choose to use an Integrated Development Environment (IDE). Those have a bit of a learning curve, but if you have used one before you can use it for CS coursework as well.&lt;br /&gt;
&lt;br /&gt;
When starting a new text editor do an internet search for a tutorial to get you started; once you are comfortable with the basics do an internet search for a cheat sheet of keyboard shortcuts to help you remember them.&lt;br /&gt;
&lt;br /&gt;
==Installing for Linux==&lt;br /&gt;
Most Linux distributions have their own package management systems, with the programs mentioned on this page being installable via the package management system.  There often is a graphical interface to the package management system, and there is normally a text-based interface - you type commands on the terminal to install packages.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Debian&#039;&#039;, &#039;&#039;Ubuntu&#039;&#039;, and related Linux distributions use the APT package manager, and you can install the programs mentioned on this page by entering the following commands in the terminal.  Note that you will likely be asked in the terminal whether you want to install the package, you need to type Y and press enter.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt update  # makes sure APT has the latest information about packages available&lt;br /&gt;
sudo apt install emacs&lt;br /&gt;
sudo apt install kate&lt;br /&gt;
sudo apt install gftp&lt;br /&gt;
sudo apt install vim&lt;br /&gt;
# Note - installing atom requires adding the repository where atom is kept&lt;br /&gt;
wget -qO - https://packagecloud.io/AtomEditor/atom/gpgkey | sudo apt-key add -&lt;br /&gt;
sudo sh -c &#039;echo &amp;quot;deb [arch=amd64] https://packagecloud.io/AtomEditor/atom/any/ any main&amp;quot; &amp;gt; /etc/apt/sources.list.d/atom.list&#039;&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt install atom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;Other Linux distributions&#039;&#039; use different package managers.  If you use a different Linux distribution and are unable to figure out how to install packages you can ask your instructor, your advisor, or the CS system administrator.&lt;br /&gt;
&lt;br /&gt;
After installing the above programs you can open them from the terminal (i.e., to open filezilla you type the command, filezilla).  The programs may also appear in the graphical menu of programs.&lt;br /&gt;
&lt;br /&gt;
==Chromebook==&lt;br /&gt;
On Chromebook you can choose whether to install apps and do all of your work connected to the CS server, or install Linux on your Chromebook and then use the instructions above on installing the programs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Using apps&#039;&#039;&#039; - Install the following apps.&lt;br /&gt;
* &#039;&#039;Text Editor&#039;&#039; - [https://chrome.google.com/webstore/detail/text/mmfbcljfglbokpmkimbfghdkjmjhdgbg?hl=en Text]&lt;br /&gt;
* &#039;&#039;Terminal Program&#039;&#039; - [https://chrome.google.com/webstore/detail/secure-shell-app/pnhechapfaindjhompbnflcldabbghjo Secure Shell]&lt;br /&gt;
* &#039;&#039;File Transfer Program&#039;&#039; - use the builtin Files app along with the Secure Shell app, configure as follows.&lt;br /&gt;
** Open the Files app.&lt;br /&gt;
** Click on the triple-dots in the upper right of the Files app, click Add new service, click Secure Shell App.&lt;br /&gt;
** On the Secure Shell App screen that comes up, enter your login information with cs.indstate.edu as the server and 22 as the port.  Then click SFTP Mount.&lt;br /&gt;
** Go back to the Files app and you will see LOGIN@cs.indstate.edu:22 as an option on the left.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Linux (Beta) on Chromebook&#039;&#039;&#039;&lt;br /&gt;
* Not all chromebooks allow installation of Linux (Beta).  If this works then you will have Linux installed on your Chromebook and will be able to use any of the commands that you use on the CS server.&lt;br /&gt;
* Follow [https://support.google.com/chromebook/answer/9145439?hl=en instructions from google].&lt;br /&gt;
* Note - installation could take a very long time (e.g., an hour or more).  If installation fails you may need to select Remove Linux Beta and try again.&lt;br /&gt;
* Once installation is complete you open a terminal using the Terminal app.  To install the programs mentioned on this page follow the instructions above for Linux (using the APT package manager commands).&lt;br /&gt;
* After the programs are installed you can open them by typing the command in the Terminal or by opening them as apps.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Copy/paste&#039;&#039;&#039; - in either the Secure Shell app or the Terminal app, copy/paste as follows.  To copy, simply select text with the mouse and it will be copied to the clipboard.  To paste, do a triple-click (three finger click).&lt;br /&gt;
&lt;br /&gt;
==Other OS-Specific Notes==&lt;br /&gt;
If you are using Windows and have Putty installed as your terminal program, it installs a text-based file transfer program as well - psftp - which you should be able to find in your list of programs.  &lt;br /&gt;
&lt;br /&gt;
If you are using MacOS or Linux, a text-based file transfer program - sftp - is normally installed by default.&lt;br /&gt;
&lt;br /&gt;
In either case, new users often prefer to use graphical file transfer programs (those mentioned above).&lt;br /&gt;
&lt;br /&gt;
For the text-based sftp programs, the basic commands you will need.&lt;br /&gt;
* ls, cd, pwd - show you the files on the server and change directories on the server.&lt;br /&gt;
* lls, lcd, lpwd - show you the files on your computer and change directories on your computer.&lt;br /&gt;
* put - send a file from your computer to the server (from your current directory on your computer, to the current directory on the server).&lt;br /&gt;
* get - download a file from the server to your computer&lt;br /&gt;
* quit&lt;br /&gt;
&lt;br /&gt;
==Compilers/Interpreters==&lt;br /&gt;
&lt;br /&gt;
===Python===&lt;br /&gt;
&lt;br /&gt;
===C/C++===&lt;br /&gt;
&lt;br /&gt;
==Backing up Files - Rsync==&lt;br /&gt;
&lt;br /&gt;
==GUI Programs X-Windows==&lt;br /&gt;
To run a GUI program while connected to the server, you will need to be running an X11 client on your local computer and have it running when connect to the server. Some further details depending on your operating system.&lt;br /&gt;
* MacOS - install [https://www.xquartz.org/ XQuartz] and run it.&lt;br /&gt;
* Windows - install [https://x.cygwin.com/ Cygwin/X] ([https://x.cygwin.com/docs/ug/setup.html#setup-cygwin-x-installing installation]) and run it. Or, euse the [https://learn.microsoft.com/en-us/windows/wsl/install Windows Subsystem for Linux] (WSL).&lt;br /&gt;
* Linux - do not need to install anything extra.&lt;br /&gt;
&lt;br /&gt;
Once you have your X11 client installed, open it, and then connect to the CS server using the -Y switch in your ssh command: &amp;lt;pre&amp;gt;ssh -Y username@cs.indstate.edu&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To verify everything is working try running in your terminal xcalc: &amp;lt;pre&amp;gt;xcalc&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Sample HW=&lt;br /&gt;
The following might be used by your instructor as part of a HW assignment to verify you have your computer setup properly.&lt;br /&gt;
&lt;br /&gt;
# Follow the steps above to setup your computer with a file transfer program, text editor, and terminal program.  Make sure you are able to use the file transfer program and terminal programs to connect to your CS class account on the CS server.&lt;br /&gt;
# Make sure you can open the text editor. Create a text file aboutMySystem.txt and put the following information.&lt;br /&gt;
## Your name: &lt;br /&gt;
## Your CS class account: &lt;br /&gt;
## Operating System: &lt;br /&gt;
## Text editor you are using: &lt;br /&gt;
## File transfer program: &lt;br /&gt;
## Did you have any difficulties in getting the programs setup? If yes, explain.&lt;br /&gt;
# Create the following screen shots demonstrating that you have the programs installed on your system properly.  Note - you can ask the internet how to take a screenshot (e.g., type in - how to screenshot on chromebook).  For each screenshot, make the screenshot of your whole screen (so I can see which OS you are running on and the program open and connected).&lt;br /&gt;
## textEditor.jpg - a screenshot that shows you editing the aboutMySystem.txt file with your text editor.&lt;br /&gt;
## fileTransfer.jpg - a screenshot that shows you using the file transfer program to connect to the CS server with your CS class account.&lt;br /&gt;
## terminal.jpg - a screenshot that shows you with the terminal program open and connected to the CS server with your CS class account.&lt;br /&gt;
# Use the file transfer program to connect to the CS server with your CS class account.  &lt;br /&gt;
## While connected, create a new directory in your CS class account on the CS server.  Name the new directory SystemSetup.&lt;br /&gt;
## Transfer the files you just created (aboutMySystem.txt, textEditor.jpg, fileTransfer.jpg, terminal.jpg) into the SystemSetup directory in your CS class account on the server.&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=Linux_-_System_Setup&amp;diff=844</id>
		<title>Linux - System Setup</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=Linux_-_System_Setup&amp;diff=844"/>
		<updated>2026-06-04T21:40:06Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: /* Text Editor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is meant to help you get your computer ready to connect to the CS server.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - this page needs updating, was last updated in 2020.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=CS User Accounts=&lt;br /&gt;
Below we guide you through getting software setup on your computer.  In order to connect to the CS server you will also need your CS user account; see [[CS accounts]]. &lt;br /&gt;
&lt;br /&gt;
=Your Personal Computer=&lt;br /&gt;
&lt;br /&gt;
==Terminal Program==&lt;br /&gt;
A terminal program allows you to type commands to run programs and view files and folders on your computer, and allows you to do the same on a remote computer (i.e., the CS server) after you have connected to it.&lt;br /&gt;
&lt;br /&gt;
Any current computer (Windows, Mac, Linux, Chrome) has a terminal program builtin. You just need to know how to start it. For each OS, here is what you need to do...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - the first time you connect to the CS server with a terminal or file transfer program, you will be notified that the identity of cs.indstate.edu cannot be verified, an ECDSA key will be displayed, and you will be asked if you still want to connect.  Type or click yes.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Windows&#039;&#039;&#039; - use the command prompt or powershell. To use the command prompt, click the Start button (at the bottom of your screen, in the middle or the left normally), start typing either &amp;quot;command&amp;quot; or &amp;quot;cmd&amp;quot; and you should see the option to run &amp;quot;Cmd.exe&amp;quot; or &amp;quot;Command Prompt&amp;quot;. To use the PowerShell, do the same (click the Start button) but start typing &amp;quot;Power Shell&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;Mac OS&#039;&#039;&#039; - use the Terminal program. To use the built-in Terminal program, use Spotlight (hold down the command key and press spacebar) and type in &amp;quot;Terminal&amp;quot;. You should see the Terminal program to click on. You can also start Terminal by clicking on the Apps icon in the Dock, and start typing &amp;quot;Terminal&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;Linux&#039;&#039;&#039; - this depends on the distribution you are using. Some use the name &amp;quot;terminal&amp;quot; for this program, and some use the name &amp;quot;shell&amp;quot;. For Ubuntu Linux with the default user interface (Gnome), you can click on the button in the bottom left (or press the Start key on your keyboard) and then start typing &amp;quot;Terminal&amp;quot; or &amp;quot;Shell&amp;quot;. You can also directly open the terminal by holding down the control-alt-t keys.&lt;br /&gt;
* &#039;&#039;&#039;Chrome&#039;&#039;&#039; - you need to first need to enable the &amp;quot;Linux development environment&amp;quot;. Click on the G or Chrome button (in the bottom left), click on Settings, in the settings click on &amp;quot;About ChromeOS&amp;quot; on the bottom, and find the &amp;quot;Developers&amp;quot; section, then click on &amp;quot;Set up&amp;quot; for the Linux development environment, then click through the setup process (you can leave default values for everything). Once you have this complete, you can start the terminal by clicking on the G or Chrome button (in the bottom left), start typing &amp;quot;Terminal&amp;quot; and click on it. You will see a Linux section and click on the first entry to start the terminal.&lt;br /&gt;
&lt;br /&gt;
==File Transfer Program==&lt;br /&gt;
You will eventually need to transfer files between your personal computer and the CS server. &lt;br /&gt;
* All current OSes include a text-based file transfer program as part of the terminal (see above for starting a terminal). Once you have a terminal open, you use the command &amp;quot;sftp&amp;quot; to start the secure ftp program.&lt;br /&gt;
* [https://filezilla-project.org/download.php?type=client FileZilla] is a graphical file transfer program that can be installed on any current OS. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - the first time you connect to the CS server with a terminal or file transfer program, you may be notified that the identity of cs.indstate.edu cannot be verified, an ECDSA key will be displayed, and you will be asked if you still want to connect.  Type or click yes.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - make sure to choose &amp;quot;sftp&amp;quot; as opposed to &amp;quot;ftp&amp;quot; when connecting.  ftp is not encrypted and is disabled on the CS server (it will not work).  sftp is encrypted and is what we use.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Text Editor==&lt;br /&gt;
Note that while you are using a terminal that is connected to the CS server you can use text-based editors - nano, emacs, vim, jove (see [[Linux Terminal - Text Editors]] for more on how to get started with these).  You will eventually want to have a good text editor on your personal computer. &lt;br /&gt;
&lt;br /&gt;
The following are four good options that are cross-platform - can be installed on Mac, Windows, Linux, and Chromebook.  If you already use some other option (e.g., Visual Studio Code, Eclipse, Notepad++, or anything else that is used by programmers) feel free to keep using what you are already using.  Note that Word is &#039;&#039;not&#039;&#039; a text editor - it does not store files in plain text, which is what is needed for programming.&lt;br /&gt;
* [https://kate-editor.org/get-it/ Kate] - make sure to download the &amp;quot;release&amp;quot; installer.&lt;br /&gt;
* [https://www.sublimetext.com/ Submlime] - used by Luke May.&lt;br /&gt;
* [https://www.gnu.org/software/emacs/ Emacs] - used by Jeff Kinne, click &amp;quot;GNU/Linux&amp;quot;, &amp;quot;Windows&amp;quot;, or &amp;quot;MacOS&amp;quot; depending on your OS and follow the instructions.  &lt;br /&gt;
** For Windows, download is from https://ftp.gnu.org/gnu/emacs/windows/, choose the latest emacs-## folder to click on, then download the zip file at the bottom that ends in &amp;quot;-x86_64.zip&amp;quot;, extract the zip to somewhere to keep the program (e.g., C:\Program Files\), then run the file runemacs.exe in the bin directory.&lt;br /&gt;
** For macOS, the easiest install is from https://emacsformacosx.com/&lt;br /&gt;
* [https://www.vim.org/download.php Vim] - used by Geoff Exoo.  For Windows, download and run the &amp;quot;self-installing executable&amp;quot;.  For macOS download and run MacVim.dmg from https://github.com/macvim-dev/macvim/releases/latest&lt;br /&gt;
* [https://code.visualstudio.com/ VS Code]&lt;br /&gt;
* ne (nice editor)&lt;br /&gt;
&lt;br /&gt;
When starting a new text editor do an internet search for a tutorial to get you started; once you are comfortable with the basics do an internet search for a cheat sheet of keyboard shortcuts to help you remember them.&lt;br /&gt;
&lt;br /&gt;
==Installing for Linux==&lt;br /&gt;
Most Linux distributions have their own package management systems, with the programs mentioned on this page being installable via the package management system.  There often is a graphical interface to the package management system, and there is normally a text-based interface - you type commands on the terminal to install packages.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Debian&#039;&#039;, &#039;&#039;Ubuntu&#039;&#039;, and related Linux distributions use the APT package manager, and you can install the programs mentioned on this page by entering the following commands in the terminal.  Note that you will likely be asked in the terminal whether you want to install the package, you need to type Y and press enter.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt update  # makes sure APT has the latest information about packages available&lt;br /&gt;
sudo apt install emacs&lt;br /&gt;
sudo apt install kate&lt;br /&gt;
sudo apt install gftp&lt;br /&gt;
sudo apt install vim&lt;br /&gt;
# Note - installing atom requires adding the repository where atom is kept&lt;br /&gt;
wget -qO - https://packagecloud.io/AtomEditor/atom/gpgkey | sudo apt-key add -&lt;br /&gt;
sudo sh -c &#039;echo &amp;quot;deb [arch=amd64] https://packagecloud.io/AtomEditor/atom/any/ any main&amp;quot; &amp;gt; /etc/apt/sources.list.d/atom.list&#039;&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt install atom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;Other Linux distributions&#039;&#039; use different package managers.  If you use a different Linux distribution and are unable to figure out how to install packages you can ask your instructor, your advisor, or the CS system administrator.&lt;br /&gt;
&lt;br /&gt;
After installing the above programs you can open them from the terminal (i.e., to open filezilla you type the command, filezilla).  The programs may also appear in the graphical menu of programs.&lt;br /&gt;
&lt;br /&gt;
==Chromebook==&lt;br /&gt;
On Chromebook you can choose whether to install apps and do all of your work connected to the CS server, or install Linux on your Chromebook and then use the instructions above on installing the programs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Using apps&#039;&#039;&#039; - Install the following apps.&lt;br /&gt;
* &#039;&#039;Text Editor&#039;&#039; - [https://chrome.google.com/webstore/detail/text/mmfbcljfglbokpmkimbfghdkjmjhdgbg?hl=en Text]&lt;br /&gt;
* &#039;&#039;Terminal Program&#039;&#039; - [https://chrome.google.com/webstore/detail/secure-shell-app/pnhechapfaindjhompbnflcldabbghjo Secure Shell]&lt;br /&gt;
* &#039;&#039;File Transfer Program&#039;&#039; - use the builtin Files app along with the Secure Shell app, configure as follows.&lt;br /&gt;
** Open the Files app.&lt;br /&gt;
** Click on the triple-dots in the upper right of the Files app, click Add new service, click Secure Shell App.&lt;br /&gt;
** On the Secure Shell App screen that comes up, enter your login information with cs.indstate.edu as the server and 22 as the port.  Then click SFTP Mount.&lt;br /&gt;
** Go back to the Files app and you will see LOGIN@cs.indstate.edu:22 as an option on the left.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Linux (Beta) on Chromebook&#039;&#039;&#039;&lt;br /&gt;
* Not all chromebooks allow installation of Linux (Beta).  If this works then you will have Linux installed on your Chromebook and will be able to use any of the commands that you use on the CS server.&lt;br /&gt;
* Follow [https://support.google.com/chromebook/answer/9145439?hl=en instructions from google].&lt;br /&gt;
* Note - installation could take a very long time (e.g., an hour or more).  If installation fails you may need to select Remove Linux Beta and try again.&lt;br /&gt;
* Once installation is complete you open a terminal using the Terminal app.  To install the programs mentioned on this page follow the instructions above for Linux (using the APT package manager commands).&lt;br /&gt;
* After the programs are installed you can open them by typing the command in the Terminal or by opening them as apps.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Copy/paste&#039;&#039;&#039; - in either the Secure Shell app or the Terminal app, copy/paste as follows.  To copy, simply select text with the mouse and it will be copied to the clipboard.  To paste, do a triple-click (three finger click).&lt;br /&gt;
&lt;br /&gt;
==Other OS-Specific Notes==&lt;br /&gt;
If you are using Windows and have Putty installed as your terminal program, it installs a text-based file transfer program as well - psftp - which you should be able to find in your list of programs.  &lt;br /&gt;
&lt;br /&gt;
If you are using MacOS or Linux, a text-based file transfer program - sftp - is normally installed by default.&lt;br /&gt;
&lt;br /&gt;
In either case, new users often prefer to use graphical file transfer programs (those mentioned above).&lt;br /&gt;
&lt;br /&gt;
For the text-based sftp programs, the basic commands you will need.&lt;br /&gt;
* ls, cd, pwd - show you the files on the server and change directories on the server.&lt;br /&gt;
* lls, lcd, lpwd - show you the files on your computer and change directories on your computer.&lt;br /&gt;
* put - send a file from your computer to the server (from your current directory on your computer, to the current directory on the server).&lt;br /&gt;
* get - download a file from the server to your computer&lt;br /&gt;
* quit&lt;br /&gt;
&lt;br /&gt;
==Compilers/Interpreters==&lt;br /&gt;
&lt;br /&gt;
===Python===&lt;br /&gt;
&lt;br /&gt;
===C/C++===&lt;br /&gt;
&lt;br /&gt;
==Backing up Files - Rsync==&lt;br /&gt;
&lt;br /&gt;
==GUI Programs X-Windows==&lt;br /&gt;
To run a GUI program while connected to the server, you will need to be running an X11 client on your local computer and have it running when connect to the server. Some further details depending on your operating system.&lt;br /&gt;
* MacOS - install [https://www.xquartz.org/ XQuartz] and run it.&lt;br /&gt;
* Windows - install [https://x.cygwin.com/ Cygwin/X] ([https://x.cygwin.com/docs/ug/setup.html#setup-cygwin-x-installing installation]) and run it. Or, euse the [https://learn.microsoft.com/en-us/windows/wsl/install Windows Subsystem for Linux] (WSL).&lt;br /&gt;
* Linux - do not need to install anything extra.&lt;br /&gt;
&lt;br /&gt;
Once you have your X11 client installed, open it, and then connect to the CS server using the -Y switch in your ssh command: &amp;lt;pre&amp;gt;ssh -Y username@cs.indstate.edu&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To verify everything is working try running in your terminal xcalc: &amp;lt;pre&amp;gt;xcalc&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Sample HW=&lt;br /&gt;
The following might be used by your instructor as part of a HW assignment to verify you have your computer setup properly.&lt;br /&gt;
&lt;br /&gt;
# Follow the steps above to setup your computer with a file transfer program, text editor, and terminal program.  Make sure you are able to use the file transfer program and terminal programs to connect to your CS class account on the CS server.&lt;br /&gt;
# Make sure you can open the text editor. Create a text file aboutMySystem.txt and put the following information.&lt;br /&gt;
## Your name: &lt;br /&gt;
## Your CS class account: &lt;br /&gt;
## Operating System: &lt;br /&gt;
## Text editor you are using: &lt;br /&gt;
## File transfer program: &lt;br /&gt;
## Did you have any difficulties in getting the programs setup? If yes, explain.&lt;br /&gt;
# Create the following screen shots demonstrating that you have the programs installed on your system properly.  Note - you can ask the internet how to take a screenshot (e.g., type in - how to screenshot on chromebook).  For each screenshot, make the screenshot of your whole screen (so I can see which OS you are running on and the program open and connected).&lt;br /&gt;
## textEditor.jpg - a screenshot that shows you editing the aboutMySystem.txt file with your text editor.&lt;br /&gt;
## fileTransfer.jpg - a screenshot that shows you using the file transfer program to connect to the CS server with your CS class account.&lt;br /&gt;
## terminal.jpg - a screenshot that shows you with the terminal program open and connected to the CS server with your CS class account.&lt;br /&gt;
# Use the file transfer program to connect to the CS server with your CS class account.  &lt;br /&gt;
## While connected, create a new directory in your CS class account on the CS server.  Name the new directory SystemSetup.&lt;br /&gt;
## Transfer the files you just created (aboutMySystem.txt, textEditor.jpg, fileTransfer.jpg, terminal.jpg) into the SystemSetup directory in your CS class account on the server.&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=Linux_-_System_Setup&amp;diff=843</id>
		<title>Linux - System Setup</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=Linux_-_System_Setup&amp;diff=843"/>
		<updated>2026-06-04T21:36:26Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: /* File Transfer Program */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is meant to help you get your computer ready to connect to the CS server.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - this page needs updating, was last updated in 2020.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=CS User Accounts=&lt;br /&gt;
Below we guide you through getting software setup on your computer.  In order to connect to the CS server you will also need your CS user account; see [[CS accounts]]. &lt;br /&gt;
&lt;br /&gt;
=Your Personal Computer=&lt;br /&gt;
&lt;br /&gt;
==Terminal Program==&lt;br /&gt;
A terminal program allows you to type commands to run programs and view files and folders on your computer, and allows you to do the same on a remote computer (i.e., the CS server) after you have connected to it.&lt;br /&gt;
&lt;br /&gt;
Any current computer (Windows, Mac, Linux, Chrome) has a terminal program builtin. You just need to know how to start it. For each OS, here is what you need to do...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - the first time you connect to the CS server with a terminal or file transfer program, you will be notified that the identity of cs.indstate.edu cannot be verified, an ECDSA key will be displayed, and you will be asked if you still want to connect.  Type or click yes.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Windows&#039;&#039;&#039; - use the command prompt or powershell. To use the command prompt, click the Start button (at the bottom of your screen, in the middle or the left normally), start typing either &amp;quot;command&amp;quot; or &amp;quot;cmd&amp;quot; and you should see the option to run &amp;quot;Cmd.exe&amp;quot; or &amp;quot;Command Prompt&amp;quot;. To use the PowerShell, do the same (click the Start button) but start typing &amp;quot;Power Shell&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;Mac OS&#039;&#039;&#039; - use the Terminal program. To use the built-in Terminal program, use Spotlight (hold down the command key and press spacebar) and type in &amp;quot;Terminal&amp;quot;. You should see the Terminal program to click on. You can also start Terminal by clicking on the Apps icon in the Dock, and start typing &amp;quot;Terminal&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;Linux&#039;&#039;&#039; - this depends on the distribution you are using. Some use the name &amp;quot;terminal&amp;quot; for this program, and some use the name &amp;quot;shell&amp;quot;. For Ubuntu Linux with the default user interface (Gnome), you can click on the button in the bottom left (or press the Start key on your keyboard) and then start typing &amp;quot;Terminal&amp;quot; or &amp;quot;Shell&amp;quot;. You can also directly open the terminal by holding down the control-alt-t keys.&lt;br /&gt;
* &#039;&#039;&#039;Chrome&#039;&#039;&#039; - you need to first need to enable the &amp;quot;Linux development environment&amp;quot;. Click on the G or Chrome button (in the bottom left), click on Settings, in the settings click on &amp;quot;About ChromeOS&amp;quot; on the bottom, and find the &amp;quot;Developers&amp;quot; section, then click on &amp;quot;Set up&amp;quot; for the Linux development environment, then click through the setup process (you can leave default values for everything). Once you have this complete, you can start the terminal by clicking on the G or Chrome button (in the bottom left), start typing &amp;quot;Terminal&amp;quot; and click on it. You will see a Linux section and click on the first entry to start the terminal.&lt;br /&gt;
&lt;br /&gt;
==File Transfer Program==&lt;br /&gt;
You will eventually need to transfer files between your personal computer and the CS server. &lt;br /&gt;
* All current OSes include a text-based file transfer program as part of the terminal (see above for starting a terminal). Once you have a terminal open, you use the command &amp;quot;sftp&amp;quot; to start the secure ftp program.&lt;br /&gt;
* [https://filezilla-project.org/download.php?type=client FileZilla] is a graphical file transfer program that can be installed on any current OS. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - the first time you connect to the CS server with a terminal or file transfer program, you may be notified that the identity of cs.indstate.edu cannot be verified, an ECDSA key will be displayed, and you will be asked if you still want to connect.  Type or click yes.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - make sure to choose &amp;quot;sftp&amp;quot; as opposed to &amp;quot;ftp&amp;quot; when connecting.  ftp is not encrypted and is disabled on the CS server (it will not work).  sftp is encrypted and is what we use.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Text Editor==&lt;br /&gt;
Note that while you are using a terminal that is connected to the CS server you can use text-based editors - nano, emacs, vim, jove (see [[Linux Terminal - Text Editors]] for more on how to get started with these).  You will eventually want to have a good text editor on your personal computer. &lt;br /&gt;
&lt;br /&gt;
The following are four good options that are cross-platform - can be installed on Mac, Windows, Linux, and Chromebook.  If you already use some other option (e.g., Visual Studio Code, Eclipse, Notepad++, or anything else that is used by programmers) feel free to keep using what you are already using.  Note that Word is &#039;&#039;not&#039;&#039; a text editor - it does not store files in plain text, which is what is needed for programming.&lt;br /&gt;
* [https://kate-editor.org/get-it/ Kate] - make sure to download the &amp;quot;release&amp;quot; installer.&lt;br /&gt;
* [https://www.sublimetext.com/ Submlime] - used by Luke May.&lt;br /&gt;
* [https://www.gnu.org/software/emacs/ Emacs] - used by Jeff Kinne, click &amp;quot;GNU/Linux&amp;quot;, &amp;quot;Windows&amp;quot;, or &amp;quot;MacOS&amp;quot; depending on your OS and follow the instructions.  &lt;br /&gt;
** For Windows, download is from https://ftp.gnu.org/gnu/emacs/windows/, choose the latest emacs-## folder to click on, then download the zip file at the bottom that ends in &amp;quot;-x86_64.zip&amp;quot;, extract the zip to somewhere to keep the program (e.g., C:\Program Files\), then run the file runemacs.exe in the bin directory.&lt;br /&gt;
** For macOS, the easiest install is from https://emacsformacosx.com/&lt;br /&gt;
* [https://www.vim.org/download.php Vim] - used by Geoff Exoo.  For Windows, download and run the &amp;quot;self-installing executable&amp;quot;.  For macOS download and run MacVim.dmg from https://github.com/macvim-dev/macvim/releases/latest&lt;br /&gt;
* VS Code&lt;br /&gt;
* ne (nice editor)&lt;br /&gt;
&lt;br /&gt;
When starting a new text editor do an internet search for a tutorial to get you started; once you are comfortable with the basics do an internet search for a cheat sheet of keyboard shortcuts to help you remember them.&lt;br /&gt;
&lt;br /&gt;
==Installing for Linux==&lt;br /&gt;
Most Linux distributions have their own package management systems, with the programs mentioned on this page being installable via the package management system.  There often is a graphical interface to the package management system, and there is normally a text-based interface - you type commands on the terminal to install packages.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Debian&#039;&#039;, &#039;&#039;Ubuntu&#039;&#039;, and related Linux distributions use the APT package manager, and you can install the programs mentioned on this page by entering the following commands in the terminal.  Note that you will likely be asked in the terminal whether you want to install the package, you need to type Y and press enter.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt update  # makes sure APT has the latest information about packages available&lt;br /&gt;
sudo apt install emacs&lt;br /&gt;
sudo apt install kate&lt;br /&gt;
sudo apt install gftp&lt;br /&gt;
sudo apt install vim&lt;br /&gt;
# Note - installing atom requires adding the repository where atom is kept&lt;br /&gt;
wget -qO - https://packagecloud.io/AtomEditor/atom/gpgkey | sudo apt-key add -&lt;br /&gt;
sudo sh -c &#039;echo &amp;quot;deb [arch=amd64] https://packagecloud.io/AtomEditor/atom/any/ any main&amp;quot; &amp;gt; /etc/apt/sources.list.d/atom.list&#039;&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt install atom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;Other Linux distributions&#039;&#039; use different package managers.  If you use a different Linux distribution and are unable to figure out how to install packages you can ask your instructor, your advisor, or the CS system administrator.&lt;br /&gt;
&lt;br /&gt;
After installing the above programs you can open them from the terminal (i.e., to open filezilla you type the command, filezilla).  The programs may also appear in the graphical menu of programs.&lt;br /&gt;
&lt;br /&gt;
==Chromebook==&lt;br /&gt;
On Chromebook you can choose whether to install apps and do all of your work connected to the CS server, or install Linux on your Chromebook and then use the instructions above on installing the programs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Using apps&#039;&#039;&#039; - Install the following apps.&lt;br /&gt;
* &#039;&#039;Text Editor&#039;&#039; - [https://chrome.google.com/webstore/detail/text/mmfbcljfglbokpmkimbfghdkjmjhdgbg?hl=en Text]&lt;br /&gt;
* &#039;&#039;Terminal Program&#039;&#039; - [https://chrome.google.com/webstore/detail/secure-shell-app/pnhechapfaindjhompbnflcldabbghjo Secure Shell]&lt;br /&gt;
* &#039;&#039;File Transfer Program&#039;&#039; - use the builtin Files app along with the Secure Shell app, configure as follows.&lt;br /&gt;
** Open the Files app.&lt;br /&gt;
** Click on the triple-dots in the upper right of the Files app, click Add new service, click Secure Shell App.&lt;br /&gt;
** On the Secure Shell App screen that comes up, enter your login information with cs.indstate.edu as the server and 22 as the port.  Then click SFTP Mount.&lt;br /&gt;
** Go back to the Files app and you will see LOGIN@cs.indstate.edu:22 as an option on the left.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Linux (Beta) on Chromebook&#039;&#039;&#039;&lt;br /&gt;
* Not all chromebooks allow installation of Linux (Beta).  If this works then you will have Linux installed on your Chromebook and will be able to use any of the commands that you use on the CS server.&lt;br /&gt;
* Follow [https://support.google.com/chromebook/answer/9145439?hl=en instructions from google].&lt;br /&gt;
* Note - installation could take a very long time (e.g., an hour or more).  If installation fails you may need to select Remove Linux Beta and try again.&lt;br /&gt;
* Once installation is complete you open a terminal using the Terminal app.  To install the programs mentioned on this page follow the instructions above for Linux (using the APT package manager commands).&lt;br /&gt;
* After the programs are installed you can open them by typing the command in the Terminal or by opening them as apps.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Copy/paste&#039;&#039;&#039; - in either the Secure Shell app or the Terminal app, copy/paste as follows.  To copy, simply select text with the mouse and it will be copied to the clipboard.  To paste, do a triple-click (three finger click).&lt;br /&gt;
&lt;br /&gt;
==Other OS-Specific Notes==&lt;br /&gt;
If you are using Windows and have Putty installed as your terminal program, it installs a text-based file transfer program as well - psftp - which you should be able to find in your list of programs.  &lt;br /&gt;
&lt;br /&gt;
If you are using MacOS or Linux, a text-based file transfer program - sftp - is normally installed by default.&lt;br /&gt;
&lt;br /&gt;
In either case, new users often prefer to use graphical file transfer programs (those mentioned above).&lt;br /&gt;
&lt;br /&gt;
For the text-based sftp programs, the basic commands you will need.&lt;br /&gt;
* ls, cd, pwd - show you the files on the server and change directories on the server.&lt;br /&gt;
* lls, lcd, lpwd - show you the files on your computer and change directories on your computer.&lt;br /&gt;
* put - send a file from your computer to the server (from your current directory on your computer, to the current directory on the server).&lt;br /&gt;
* get - download a file from the server to your computer&lt;br /&gt;
* quit&lt;br /&gt;
&lt;br /&gt;
==Compilers/Interpreters==&lt;br /&gt;
&lt;br /&gt;
===Python===&lt;br /&gt;
&lt;br /&gt;
===C/C++===&lt;br /&gt;
&lt;br /&gt;
==Backing up Files - Rsync==&lt;br /&gt;
&lt;br /&gt;
==GUI Programs X-Windows==&lt;br /&gt;
To run a GUI program while connected to the server, you will need to be running an X11 client on your local computer and have it running when connect to the server. Some further details depending on your operating system.&lt;br /&gt;
* MacOS - install [https://www.xquartz.org/ XQuartz] and run it.&lt;br /&gt;
* Windows - install [https://x.cygwin.com/ Cygwin/X] ([https://x.cygwin.com/docs/ug/setup.html#setup-cygwin-x-installing installation]) and run it. Or, euse the [https://learn.microsoft.com/en-us/windows/wsl/install Windows Subsystem for Linux] (WSL).&lt;br /&gt;
* Linux - do not need to install anything extra.&lt;br /&gt;
&lt;br /&gt;
Once you have your X11 client installed, open it, and then connect to the CS server using the -Y switch in your ssh command: &amp;lt;pre&amp;gt;ssh -Y username@cs.indstate.edu&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To verify everything is working try running in your terminal xcalc: &amp;lt;pre&amp;gt;xcalc&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Sample HW=&lt;br /&gt;
The following might be used by your instructor as part of a HW assignment to verify you have your computer setup properly.&lt;br /&gt;
&lt;br /&gt;
# Follow the steps above to setup your computer with a file transfer program, text editor, and terminal program.  Make sure you are able to use the file transfer program and terminal programs to connect to your CS class account on the CS server.&lt;br /&gt;
# Make sure you can open the text editor. Create a text file aboutMySystem.txt and put the following information.&lt;br /&gt;
## Your name: &lt;br /&gt;
## Your CS class account: &lt;br /&gt;
## Operating System: &lt;br /&gt;
## Text editor you are using: &lt;br /&gt;
## File transfer program: &lt;br /&gt;
## Did you have any difficulties in getting the programs setup? If yes, explain.&lt;br /&gt;
# Create the following screen shots demonstrating that you have the programs installed on your system properly.  Note - you can ask the internet how to take a screenshot (e.g., type in - how to screenshot on chromebook).  For each screenshot, make the screenshot of your whole screen (so I can see which OS you are running on and the program open and connected).&lt;br /&gt;
## textEditor.jpg - a screenshot that shows you editing the aboutMySystem.txt file with your text editor.&lt;br /&gt;
## fileTransfer.jpg - a screenshot that shows you using the file transfer program to connect to the CS server with your CS class account.&lt;br /&gt;
## terminal.jpg - a screenshot that shows you with the terminal program open and connected to the CS server with your CS class account.&lt;br /&gt;
# Use the file transfer program to connect to the CS server with your CS class account.  &lt;br /&gt;
## While connected, create a new directory in your CS class account on the CS server.  Name the new directory SystemSetup.&lt;br /&gt;
## Transfer the files you just created (aboutMySystem.txt, textEditor.jpg, fileTransfer.jpg, terminal.jpg) into the SystemSetup directory in your CS class account on the server.&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=Linux_-_System_Setup&amp;diff=842</id>
		<title>Linux - System Setup</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=Linux_-_System_Setup&amp;diff=842"/>
		<updated>2026-06-04T21:34:11Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: /* Terminal Program */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is meant to help you get your computer ready to connect to the CS server.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - this page needs updating, was last updated in 2020.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=CS User Accounts=&lt;br /&gt;
Below we guide you through getting software setup on your computer.  In order to connect to the CS server you will also need your CS user account; see [[CS accounts]]. &lt;br /&gt;
&lt;br /&gt;
=Your Personal Computer=&lt;br /&gt;
&lt;br /&gt;
==Terminal Program==&lt;br /&gt;
A terminal program allows you to type commands to run programs and view files and folders on your computer, and allows you to do the same on a remote computer (i.e., the CS server) after you have connected to it.&lt;br /&gt;
&lt;br /&gt;
Any current computer (Windows, Mac, Linux, Chrome) has a terminal program builtin. You just need to know how to start it. For each OS, here is what you need to do...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - the first time you connect to the CS server with a terminal or file transfer program, you will be notified that the identity of cs.indstate.edu cannot be verified, an ECDSA key will be displayed, and you will be asked if you still want to connect.  Type or click yes.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Windows&#039;&#039;&#039; - use the command prompt or powershell. To use the command prompt, click the Start button (at the bottom of your screen, in the middle or the left normally), start typing either &amp;quot;command&amp;quot; or &amp;quot;cmd&amp;quot; and you should see the option to run &amp;quot;Cmd.exe&amp;quot; or &amp;quot;Command Prompt&amp;quot;. To use the PowerShell, do the same (click the Start button) but start typing &amp;quot;Power Shell&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;Mac OS&#039;&#039;&#039; - use the Terminal program. To use the built-in Terminal program, use Spotlight (hold down the command key and press spacebar) and type in &amp;quot;Terminal&amp;quot;. You should see the Terminal program to click on. You can also start Terminal by clicking on the Apps icon in the Dock, and start typing &amp;quot;Terminal&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;Linux&#039;&#039;&#039; - this depends on the distribution you are using. Some use the name &amp;quot;terminal&amp;quot; for this program, and some use the name &amp;quot;shell&amp;quot;. For Ubuntu Linux with the default user interface (Gnome), you can click on the button in the bottom left (or press the Start key on your keyboard) and then start typing &amp;quot;Terminal&amp;quot; or &amp;quot;Shell&amp;quot;. You can also directly open the terminal by holding down the control-alt-t keys.&lt;br /&gt;
* &#039;&#039;&#039;Chrome&#039;&#039;&#039; - you need to first need to enable the &amp;quot;Linux development environment&amp;quot;. Click on the G or Chrome button (in the bottom left), click on Settings, in the settings click on &amp;quot;About ChromeOS&amp;quot; on the bottom, and find the &amp;quot;Developers&amp;quot; section, then click on &amp;quot;Set up&amp;quot; for the Linux development environment, then click through the setup process (you can leave default values for everything). Once you have this complete, you can start the terminal by clicking on the G or Chrome button (in the bottom left), start typing &amp;quot;Terminal&amp;quot; and click on it. You will see a Linux section and click on the first entry to start the terminal.&lt;br /&gt;
&lt;br /&gt;
==File Transfer Program==&lt;br /&gt;
You will eventually need to transfer files between your personal computer and the CS server.  Most OSes have built-in support to do this, but there are other options that are easier to use.  We recommend choosing a file transfer program to install.  For Windows or Mac you will download the installer to install the program.  If you are using Linux or Chromebook, see the sections below about these environments.&lt;br /&gt;
* [https://cyberduck.io/download/ CyberDuck] - works for MacOS or Windows, is freeware, click the large &amp;quot;Download for Windows&amp;quot; or &amp;quot;Download for macOS&amp;quot; in the middle of the page.&lt;br /&gt;
* [https://winscp.net/eng/download.php WinSCP] - works for Windows, scroll past ads and click the &amp;quot;Download WINSCP&amp;quot; button.&lt;br /&gt;
* [https://www.gftp.org/ gFTP] - good option for Linux, see below about Linux for how to install.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - the first time you connect to the CS server with a terminal or file transfer program, you will be notified that the identity of cs.indstate.edu cannot be verified, an ECDSA key will be displayed, and you will be asked if you still want to connect.  Type or click yes.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - make sure to choose &amp;quot;sftp&amp;quot; as opposed to &amp;quot;ftp&amp;quot; when connecting.  ftp is not encrypted and is disabled on the CS server (it will not work).  sftp is encrypted and is what we use.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Text-based sftp program that is already installed on many systems - see OS Specific Notes below&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Text Editor==&lt;br /&gt;
Note that while you are using a terminal that is connected to the CS server you can use text-based editors - nano, emacs, vim, jove (see [[Linux Terminal - Text Editors]] for more on how to get started with these).  You will eventually want to have a good text editor on your personal computer. &lt;br /&gt;
&lt;br /&gt;
The following are four good options that are cross-platform - can be installed on Mac, Windows, Linux, and Chromebook.  If you already use some other option (e.g., Visual Studio Code, Eclipse, Notepad++, or anything else that is used by programmers) feel free to keep using what you are already using.  Note that Word is &#039;&#039;not&#039;&#039; a text editor - it does not store files in plain text, which is what is needed for programming.&lt;br /&gt;
* [https://kate-editor.org/get-it/ Kate] - make sure to download the &amp;quot;release&amp;quot; installer.&lt;br /&gt;
* [https://www.sublimetext.com/ Submlime] - used by Luke May.&lt;br /&gt;
* [https://www.gnu.org/software/emacs/ Emacs] - used by Jeff Kinne, click &amp;quot;GNU/Linux&amp;quot;, &amp;quot;Windows&amp;quot;, or &amp;quot;MacOS&amp;quot; depending on your OS and follow the instructions.  &lt;br /&gt;
** For Windows, download is from https://ftp.gnu.org/gnu/emacs/windows/, choose the latest emacs-## folder to click on, then download the zip file at the bottom that ends in &amp;quot;-x86_64.zip&amp;quot;, extract the zip to somewhere to keep the program (e.g., C:\Program Files\), then run the file runemacs.exe in the bin directory.&lt;br /&gt;
** For macOS, the easiest install is from https://emacsformacosx.com/&lt;br /&gt;
* [https://www.vim.org/download.php Vim] - used by Geoff Exoo.  For Windows, download and run the &amp;quot;self-installing executable&amp;quot;.  For macOS download and run MacVim.dmg from https://github.com/macvim-dev/macvim/releases/latest&lt;br /&gt;
* VS Code&lt;br /&gt;
* ne (nice editor)&lt;br /&gt;
&lt;br /&gt;
When starting a new text editor do an internet search for a tutorial to get you started; once you are comfortable with the basics do an internet search for a cheat sheet of keyboard shortcuts to help you remember them.&lt;br /&gt;
&lt;br /&gt;
==Installing for Linux==&lt;br /&gt;
Most Linux distributions have their own package management systems, with the programs mentioned on this page being installable via the package management system.  There often is a graphical interface to the package management system, and there is normally a text-based interface - you type commands on the terminal to install packages.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Debian&#039;&#039;, &#039;&#039;Ubuntu&#039;&#039;, and related Linux distributions use the APT package manager, and you can install the programs mentioned on this page by entering the following commands in the terminal.  Note that you will likely be asked in the terminal whether you want to install the package, you need to type Y and press enter.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt update  # makes sure APT has the latest information about packages available&lt;br /&gt;
sudo apt install emacs&lt;br /&gt;
sudo apt install kate&lt;br /&gt;
sudo apt install gftp&lt;br /&gt;
sudo apt install vim&lt;br /&gt;
# Note - installing atom requires adding the repository where atom is kept&lt;br /&gt;
wget -qO - https://packagecloud.io/AtomEditor/atom/gpgkey | sudo apt-key add -&lt;br /&gt;
sudo sh -c &#039;echo &amp;quot;deb [arch=amd64] https://packagecloud.io/AtomEditor/atom/any/ any main&amp;quot; &amp;gt; /etc/apt/sources.list.d/atom.list&#039;&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt install atom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;Other Linux distributions&#039;&#039; use different package managers.  If you use a different Linux distribution and are unable to figure out how to install packages you can ask your instructor, your advisor, or the CS system administrator.&lt;br /&gt;
&lt;br /&gt;
After installing the above programs you can open them from the terminal (i.e., to open filezilla you type the command, filezilla).  The programs may also appear in the graphical menu of programs.&lt;br /&gt;
&lt;br /&gt;
==Chromebook==&lt;br /&gt;
On Chromebook you can choose whether to install apps and do all of your work connected to the CS server, or install Linux on your Chromebook and then use the instructions above on installing the programs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Using apps&#039;&#039;&#039; - Install the following apps.&lt;br /&gt;
* &#039;&#039;Text Editor&#039;&#039; - [https://chrome.google.com/webstore/detail/text/mmfbcljfglbokpmkimbfghdkjmjhdgbg?hl=en Text]&lt;br /&gt;
* &#039;&#039;Terminal Program&#039;&#039; - [https://chrome.google.com/webstore/detail/secure-shell-app/pnhechapfaindjhompbnflcldabbghjo Secure Shell]&lt;br /&gt;
* &#039;&#039;File Transfer Program&#039;&#039; - use the builtin Files app along with the Secure Shell app, configure as follows.&lt;br /&gt;
** Open the Files app.&lt;br /&gt;
** Click on the triple-dots in the upper right of the Files app, click Add new service, click Secure Shell App.&lt;br /&gt;
** On the Secure Shell App screen that comes up, enter your login information with cs.indstate.edu as the server and 22 as the port.  Then click SFTP Mount.&lt;br /&gt;
** Go back to the Files app and you will see LOGIN@cs.indstate.edu:22 as an option on the left.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Linux (Beta) on Chromebook&#039;&#039;&#039;&lt;br /&gt;
* Not all chromebooks allow installation of Linux (Beta).  If this works then you will have Linux installed on your Chromebook and will be able to use any of the commands that you use on the CS server.&lt;br /&gt;
* Follow [https://support.google.com/chromebook/answer/9145439?hl=en instructions from google].&lt;br /&gt;
* Note - installation could take a very long time (e.g., an hour or more).  If installation fails you may need to select Remove Linux Beta and try again.&lt;br /&gt;
* Once installation is complete you open a terminal using the Terminal app.  To install the programs mentioned on this page follow the instructions above for Linux (using the APT package manager commands).&lt;br /&gt;
* After the programs are installed you can open them by typing the command in the Terminal or by opening them as apps.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Copy/paste&#039;&#039;&#039; - in either the Secure Shell app or the Terminal app, copy/paste as follows.  To copy, simply select text with the mouse and it will be copied to the clipboard.  To paste, do a triple-click (three finger click).&lt;br /&gt;
&lt;br /&gt;
==Other OS-Specific Notes==&lt;br /&gt;
If you are using Windows and have Putty installed as your terminal program, it installs a text-based file transfer program as well - psftp - which you should be able to find in your list of programs.  &lt;br /&gt;
&lt;br /&gt;
If you are using MacOS or Linux, a text-based file transfer program - sftp - is normally installed by default.&lt;br /&gt;
&lt;br /&gt;
In either case, new users often prefer to use graphical file transfer programs (those mentioned above).&lt;br /&gt;
&lt;br /&gt;
For the text-based sftp programs, the basic commands you will need.&lt;br /&gt;
* ls, cd, pwd - show you the files on the server and change directories on the server.&lt;br /&gt;
* lls, lcd, lpwd - show you the files on your computer and change directories on your computer.&lt;br /&gt;
* put - send a file from your computer to the server (from your current directory on your computer, to the current directory on the server).&lt;br /&gt;
* get - download a file from the server to your computer&lt;br /&gt;
* quit&lt;br /&gt;
&lt;br /&gt;
==Compilers/Interpreters==&lt;br /&gt;
&lt;br /&gt;
===Python===&lt;br /&gt;
&lt;br /&gt;
===C/C++===&lt;br /&gt;
&lt;br /&gt;
==Backing up Files - Rsync==&lt;br /&gt;
&lt;br /&gt;
==GUI Programs X-Windows==&lt;br /&gt;
To run a GUI program while connected to the server, you will need to be running an X11 client on your local computer and have it running when connect to the server. Some further details depending on your operating system.&lt;br /&gt;
* MacOS - install [https://www.xquartz.org/ XQuartz] and run it.&lt;br /&gt;
* Windows - install [https://x.cygwin.com/ Cygwin/X] ([https://x.cygwin.com/docs/ug/setup.html#setup-cygwin-x-installing installation]) and run it. Or, euse the [https://learn.microsoft.com/en-us/windows/wsl/install Windows Subsystem for Linux] (WSL).&lt;br /&gt;
* Linux - do not need to install anything extra.&lt;br /&gt;
&lt;br /&gt;
Once you have your X11 client installed, open it, and then connect to the CS server using the -Y switch in your ssh command: &amp;lt;pre&amp;gt;ssh -Y username@cs.indstate.edu&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To verify everything is working try running in your terminal xcalc: &amp;lt;pre&amp;gt;xcalc&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Sample HW=&lt;br /&gt;
The following might be used by your instructor as part of a HW assignment to verify you have your computer setup properly.&lt;br /&gt;
&lt;br /&gt;
# Follow the steps above to setup your computer with a file transfer program, text editor, and terminal program.  Make sure you are able to use the file transfer program and terminal programs to connect to your CS class account on the CS server.&lt;br /&gt;
# Make sure you can open the text editor. Create a text file aboutMySystem.txt and put the following information.&lt;br /&gt;
## Your name: &lt;br /&gt;
## Your CS class account: &lt;br /&gt;
## Operating System: &lt;br /&gt;
## Text editor you are using: &lt;br /&gt;
## File transfer program: &lt;br /&gt;
## Did you have any difficulties in getting the programs setup? If yes, explain.&lt;br /&gt;
# Create the following screen shots demonstrating that you have the programs installed on your system properly.  Note - you can ask the internet how to take a screenshot (e.g., type in - how to screenshot on chromebook).  For each screenshot, make the screenshot of your whole screen (so I can see which OS you are running on and the program open and connected).&lt;br /&gt;
## textEditor.jpg - a screenshot that shows you editing the aboutMySystem.txt file with your text editor.&lt;br /&gt;
## fileTransfer.jpg - a screenshot that shows you using the file transfer program to connect to the CS server with your CS class account.&lt;br /&gt;
## terminal.jpg - a screenshot that shows you with the terminal program open and connected to the CS server with your CS class account.&lt;br /&gt;
# Use the file transfer program to connect to the CS server with your CS class account.  &lt;br /&gt;
## While connected, create a new directory in your CS class account on the CS server.  Name the new directory SystemSetup.&lt;br /&gt;
## Transfer the files you just created (aboutMySystem.txt, textEditor.jpg, fileTransfer.jpg, terminal.jpg) into the SystemSetup directory in your CS class account on the server.&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=Linux_-_System_Setup&amp;diff=841</id>
		<title>Linux - System Setup</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=Linux_-_System_Setup&amp;diff=841"/>
		<updated>2026-06-04T21:07:00Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: /* Your Personal Computer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is meant to help you get your computer ready to connect to the CS server.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - this page needs updating, was last updated in 2020.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=CS User Accounts=&lt;br /&gt;
Below we guide you through getting software setup on your computer.  In order to connect to the CS server you will also need your CS user account; see [[CS accounts]]. &lt;br /&gt;
&lt;br /&gt;
=Your Personal Computer=&lt;br /&gt;
&lt;br /&gt;
==Terminal Program==&lt;br /&gt;
A terminal program allows you to type commands to run programs and view files and folders on your computer, and allows you to do the same on a remote computer (i.e., the CS server) after you have connected to it.&lt;br /&gt;
&lt;br /&gt;
Any current computer (Windows, Mac, Linux, Chrome) has a terminal program builtin. You just need to know how to start it. For each OS, here is what you need to do...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - the first time you connect to the CS server with a terminal or file transfer program, you will be notified that the identity of cs.indstate.edu cannot be verified, an ECDSA key will be displayed, and you will be asked if you still want to connect.  Type or click yes.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Windows&#039;&#039;&#039; - use the command prompt or powershell. To use the command prompt, click the Start button (at the bottom of your screen, in the middle or the left normally), start typing either &amp;quot;command&amp;quot; or &amp;quot;cmd&amp;quot; and you should see the option to run &amp;quot;Cmd.exe&amp;quot; or &amp;quot;Command Prompt&amp;quot;. To use the PowerShell, do the same (click the Start button) but start typing &amp;quot;Power Shell&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;Mac OS&#039;&#039;&#039; - use the Terminal program. To use the built-in Terminal program, use Spotlight (hold down the command key and press spacebar) and type in &amp;quot;Terminal&amp;quot;. You should see the Terminal program to click on. You can also start Terminal by clicking on the Apps icon in the Dock, and start typing &amp;quot;Terminal&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;Linux&#039;&#039;&#039; - this depends on the distribution you are using. Some use the name &amp;quot;terminal&amp;quot; for this program, and some use the name &amp;quot;shell&amp;quot;. For Ubuntu Linux with the default user interface (Gnome), you can click on the button in the bottom left (or press the Start key on your keyboard) and then start typing &amp;quot;Terminal&amp;quot; or &amp;quot;Shell&amp;quot;. You can also directly open the terminal by holding down the control-alt-t keys.&lt;br /&gt;
* &#039;&#039;&#039;Chrome&#039;&#039;&#039; - &lt;br /&gt;
&lt;br /&gt;
==File Transfer Program==&lt;br /&gt;
You will eventually need to transfer files between your personal computer and the CS server.  Most OSes have built-in support to do this, but there are other options that are easier to use.  We recommend choosing a file transfer program to install.  For Windows or Mac you will download the installer to install the program.  If you are using Linux or Chromebook, see the sections below about these environments.&lt;br /&gt;
* [https://cyberduck.io/download/ CyberDuck] - works for MacOS or Windows, is freeware, click the large &amp;quot;Download for Windows&amp;quot; or &amp;quot;Download for macOS&amp;quot; in the middle of the page.&lt;br /&gt;
* [https://winscp.net/eng/download.php WinSCP] - works for Windows, scroll past ads and click the &amp;quot;Download WINSCP&amp;quot; button.&lt;br /&gt;
* [https://www.gftp.org/ gFTP] - good option for Linux, see below about Linux for how to install.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - the first time you connect to the CS server with a terminal or file transfer program, you will be notified that the identity of cs.indstate.edu cannot be verified, an ECDSA key will be displayed, and you will be asked if you still want to connect.  Type or click yes.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note - make sure to choose &amp;quot;sftp&amp;quot; as opposed to &amp;quot;ftp&amp;quot; when connecting.  ftp is not encrypted and is disabled on the CS server (it will not work).  sftp is encrypted and is what we use.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Text-based sftp program that is already installed on many systems - see OS Specific Notes below&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Text Editor==&lt;br /&gt;
Note that while you are using a terminal that is connected to the CS server you can use text-based editors - nano, emacs, vim, jove (see [[Linux Terminal - Text Editors]] for more on how to get started with these).  You will eventually want to have a good text editor on your personal computer. &lt;br /&gt;
&lt;br /&gt;
The following are four good options that are cross-platform - can be installed on Mac, Windows, Linux, and Chromebook.  If you already use some other option (e.g., Visual Studio Code, Eclipse, Notepad++, or anything else that is used by programmers) feel free to keep using what you are already using.  Note that Word is &#039;&#039;not&#039;&#039; a text editor - it does not store files in plain text, which is what is needed for programming.&lt;br /&gt;
* [https://kate-editor.org/get-it/ Kate] - make sure to download the &amp;quot;release&amp;quot; installer.&lt;br /&gt;
* [https://www.sublimetext.com/ Submlime] - used by Luke May.&lt;br /&gt;
* [https://www.gnu.org/software/emacs/ Emacs] - used by Jeff Kinne, click &amp;quot;GNU/Linux&amp;quot;, &amp;quot;Windows&amp;quot;, or &amp;quot;MacOS&amp;quot; depending on your OS and follow the instructions.  &lt;br /&gt;
** For Windows, download is from https://ftp.gnu.org/gnu/emacs/windows/, choose the latest emacs-## folder to click on, then download the zip file at the bottom that ends in &amp;quot;-x86_64.zip&amp;quot;, extract the zip to somewhere to keep the program (e.g., C:\Program Files\), then run the file runemacs.exe in the bin directory.&lt;br /&gt;
** For macOS, the easiest install is from https://emacsformacosx.com/&lt;br /&gt;
* [https://www.vim.org/download.php Vim] - used by Geoff Exoo.  For Windows, download and run the &amp;quot;self-installing executable&amp;quot;.  For macOS download and run MacVim.dmg from https://github.com/macvim-dev/macvim/releases/latest&lt;br /&gt;
* VS Code&lt;br /&gt;
* ne (nice editor)&lt;br /&gt;
&lt;br /&gt;
When starting a new text editor do an internet search for a tutorial to get you started; once you are comfortable with the basics do an internet search for a cheat sheet of keyboard shortcuts to help you remember them.&lt;br /&gt;
&lt;br /&gt;
==Installing for Linux==&lt;br /&gt;
Most Linux distributions have their own package management systems, with the programs mentioned on this page being installable via the package management system.  There often is a graphical interface to the package management system, and there is normally a text-based interface - you type commands on the terminal to install packages.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Debian&#039;&#039;, &#039;&#039;Ubuntu&#039;&#039;, and related Linux distributions use the APT package manager, and you can install the programs mentioned on this page by entering the following commands in the terminal.  Note that you will likely be asked in the terminal whether you want to install the package, you need to type Y and press enter.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt update  # makes sure APT has the latest information about packages available&lt;br /&gt;
sudo apt install emacs&lt;br /&gt;
sudo apt install kate&lt;br /&gt;
sudo apt install gftp&lt;br /&gt;
sudo apt install vim&lt;br /&gt;
# Note - installing atom requires adding the repository where atom is kept&lt;br /&gt;
wget -qO - https://packagecloud.io/AtomEditor/atom/gpgkey | sudo apt-key add -&lt;br /&gt;
sudo sh -c &#039;echo &amp;quot;deb [arch=amd64] https://packagecloud.io/AtomEditor/atom/any/ any main&amp;quot; &amp;gt; /etc/apt/sources.list.d/atom.list&#039;&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt install atom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;Other Linux distributions&#039;&#039; use different package managers.  If you use a different Linux distribution and are unable to figure out how to install packages you can ask your instructor, your advisor, or the CS system administrator.&lt;br /&gt;
&lt;br /&gt;
After installing the above programs you can open them from the terminal (i.e., to open filezilla you type the command, filezilla).  The programs may also appear in the graphical menu of programs.&lt;br /&gt;
&lt;br /&gt;
==Chromebook==&lt;br /&gt;
On Chromebook you can choose whether to install apps and do all of your work connected to the CS server, or install Linux on your Chromebook and then use the instructions above on installing the programs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Using apps&#039;&#039;&#039; - Install the following apps.&lt;br /&gt;
* &#039;&#039;Text Editor&#039;&#039; - [https://chrome.google.com/webstore/detail/text/mmfbcljfglbokpmkimbfghdkjmjhdgbg?hl=en Text]&lt;br /&gt;
* &#039;&#039;Terminal Program&#039;&#039; - [https://chrome.google.com/webstore/detail/secure-shell-app/pnhechapfaindjhompbnflcldabbghjo Secure Shell]&lt;br /&gt;
* &#039;&#039;File Transfer Program&#039;&#039; - use the builtin Files app along with the Secure Shell app, configure as follows.&lt;br /&gt;
** Open the Files app.&lt;br /&gt;
** Click on the triple-dots in the upper right of the Files app, click Add new service, click Secure Shell App.&lt;br /&gt;
** On the Secure Shell App screen that comes up, enter your login information with cs.indstate.edu as the server and 22 as the port.  Then click SFTP Mount.&lt;br /&gt;
** Go back to the Files app and you will see LOGIN@cs.indstate.edu:22 as an option on the left.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Linux (Beta) on Chromebook&#039;&#039;&#039;&lt;br /&gt;
* Not all chromebooks allow installation of Linux (Beta).  If this works then you will have Linux installed on your Chromebook and will be able to use any of the commands that you use on the CS server.&lt;br /&gt;
* Follow [https://support.google.com/chromebook/answer/9145439?hl=en instructions from google].&lt;br /&gt;
* Note - installation could take a very long time (e.g., an hour or more).  If installation fails you may need to select Remove Linux Beta and try again.&lt;br /&gt;
* Once installation is complete you open a terminal using the Terminal app.  To install the programs mentioned on this page follow the instructions above for Linux (using the APT package manager commands).&lt;br /&gt;
* After the programs are installed you can open them by typing the command in the Terminal or by opening them as apps.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Copy/paste&#039;&#039;&#039; - in either the Secure Shell app or the Terminal app, copy/paste as follows.  To copy, simply select text with the mouse and it will be copied to the clipboard.  To paste, do a triple-click (three finger click).&lt;br /&gt;
&lt;br /&gt;
==Other OS-Specific Notes==&lt;br /&gt;
If you are using Windows and have Putty installed as your terminal program, it installs a text-based file transfer program as well - psftp - which you should be able to find in your list of programs.  &lt;br /&gt;
&lt;br /&gt;
If you are using MacOS or Linux, a text-based file transfer program - sftp - is normally installed by default.&lt;br /&gt;
&lt;br /&gt;
In either case, new users often prefer to use graphical file transfer programs (those mentioned above).&lt;br /&gt;
&lt;br /&gt;
For the text-based sftp programs, the basic commands you will need.&lt;br /&gt;
* ls, cd, pwd - show you the files on the server and change directories on the server.&lt;br /&gt;
* lls, lcd, lpwd - show you the files on your computer and change directories on your computer.&lt;br /&gt;
* put - send a file from your computer to the server (from your current directory on your computer, to the current directory on the server).&lt;br /&gt;
* get - download a file from the server to your computer&lt;br /&gt;
* quit&lt;br /&gt;
&lt;br /&gt;
==Compilers/Interpreters==&lt;br /&gt;
&lt;br /&gt;
===Python===&lt;br /&gt;
&lt;br /&gt;
===C/C++===&lt;br /&gt;
&lt;br /&gt;
==Backing up Files - Rsync==&lt;br /&gt;
&lt;br /&gt;
==GUI Programs X-Windows==&lt;br /&gt;
To run a GUI program while connected to the server, you will need to be running an X11 client on your local computer and have it running when connect to the server. Some further details depending on your operating system.&lt;br /&gt;
* MacOS - install [https://www.xquartz.org/ XQuartz] and run it.&lt;br /&gt;
* Windows - install [https://x.cygwin.com/ Cygwin/X] ([https://x.cygwin.com/docs/ug/setup.html#setup-cygwin-x-installing installation]) and run it. Or, euse the [https://learn.microsoft.com/en-us/windows/wsl/install Windows Subsystem for Linux] (WSL).&lt;br /&gt;
* Linux - do not need to install anything extra.&lt;br /&gt;
&lt;br /&gt;
Once you have your X11 client installed, open it, and then connect to the CS server using the -Y switch in your ssh command: &amp;lt;pre&amp;gt;ssh -Y username@cs.indstate.edu&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To verify everything is working try running in your terminal xcalc: &amp;lt;pre&amp;gt;xcalc&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Sample HW=&lt;br /&gt;
The following might be used by your instructor as part of a HW assignment to verify you have your computer setup properly.&lt;br /&gt;
&lt;br /&gt;
# Follow the steps above to setup your computer with a file transfer program, text editor, and terminal program.  Make sure you are able to use the file transfer program and terminal programs to connect to your CS class account on the CS server.&lt;br /&gt;
# Make sure you can open the text editor. Create a text file aboutMySystem.txt and put the following information.&lt;br /&gt;
## Your name: &lt;br /&gt;
## Your CS class account: &lt;br /&gt;
## Operating System: &lt;br /&gt;
## Text editor you are using: &lt;br /&gt;
## File transfer program: &lt;br /&gt;
## Did you have any difficulties in getting the programs setup? If yes, explain.&lt;br /&gt;
# Create the following screen shots demonstrating that you have the programs installed on your system properly.  Note - you can ask the internet how to take a screenshot (e.g., type in - how to screenshot on chromebook).  For each screenshot, make the screenshot of your whole screen (so I can see which OS you are running on and the program open and connected).&lt;br /&gt;
## textEditor.jpg - a screenshot that shows you editing the aboutMySystem.txt file with your text editor.&lt;br /&gt;
## fileTransfer.jpg - a screenshot that shows you using the file transfer program to connect to the CS server with your CS class account.&lt;br /&gt;
## terminal.jpg - a screenshot that shows you with the terminal program open and connected to the CS server with your CS class account.&lt;br /&gt;
# Use the file transfer program to connect to the CS server with your CS class account.  &lt;br /&gt;
## While connected, create a new directory in your CS class account on the CS server.  Name the new directory SystemSetup.&lt;br /&gt;
## Transfer the files you just created (aboutMySystem.txt, textEditor.jpg, fileTransfer.jpg, terminal.jpg) into the SystemSetup directory in your CS class account on the server.&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=Beginning_Programming&amp;diff=840</id>
		<title>Beginning Programming</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=Beginning_Programming&amp;diff=840"/>
		<updated>2026-06-04T19:45:17Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: /* Getting Ready */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Computing majors ==&lt;br /&gt;
If you are interested in computing, at ISU your options are Computer Science, Information Technology, Cyber &amp;amp; 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.&lt;br /&gt;
&lt;br /&gt;
== CS at ISU ==&lt;br /&gt;
Most programs that are called &amp;quot;Computer Science&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
== Getting Ready ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* [[Programming Practice]]&lt;br /&gt;
* http://code.org - go do some of their tutorials. These are mostly aimed at middle-school aged students, but is great experience and fun.&lt;br /&gt;
* Get a copy of Introduction to Algorithms (any edition) and start perusing it.&lt;br /&gt;
* http://appinventor.mit.edu/explore/ - make apps for Android.&lt;br /&gt;
* See our [[Help and Getting Started]] page.&lt;br /&gt;
* Install linux on one of your home computers (Ubuntu and Mint are pretty easy to use). Note - do it on a computer that doesn&#039;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.&lt;br /&gt;
* Some key ideas in CS and examples -&lt;br /&gt;
** Algorithm - linear search vs. binary search, selection sort vs. merge sort, Euclid&#039;s algorithm vs. trial division&lt;br /&gt;
** 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]&lt;br /&gt;
** Data speeds - tape vs. hard disk drive vs. RAM vs. CPU cache vs. CPU registers&lt;br /&gt;
** Abstraction - operating system virtual memory, RAID, object-oriented programming, file system, any API, any programming language&lt;br /&gt;
** Assembly language - [https://en.wikipedia.org/wiki/Little_man_computer little man computer] ([http://robowriter.info/little-man-computer/ simulator])&lt;br /&gt;
* Some classic beginning programming projects -&lt;br /&gt;
** Encryption - Caesar cipher, substitution cipher, Vigenere, RSA, and others&lt;br /&gt;
** Letter and word frequency - used in breaking substitution cipher, used in AI&lt;br /&gt;
** Chatbot - responds in a reasonable way to many text, see Eliza (&amp;quot;the doctor&amp;quot;)&lt;br /&gt;
** Choose your adventure game&lt;br /&gt;
** 2d maze/dungeon crawler&lt;br /&gt;
** Arithmetic quiz and tables - for kids learning their math facts&lt;br /&gt;
** Paint&lt;br /&gt;
** Drawing shapes - regular polygons, stars, fractals&lt;br /&gt;
** Board game - tic tac toe, connect 4, chess, you name it&lt;br /&gt;
** Calculator - with usual operations but also with your own custom ones&lt;br /&gt;
&lt;br /&gt;
== Other Helpful Resources ==&lt;br /&gt;
* [https://developer.android.com/ Make Android applications]&lt;br /&gt;
* [https://developer.apple.com/ Make iOS applications]&lt;br /&gt;
* [https://www.jetbrains.com/student Development tools for students]&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=Beginning_Programming&amp;diff=839</id>
		<title>Beginning Programming</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=Beginning_Programming&amp;diff=839"/>
		<updated>2026-06-04T19:45:07Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: /* Getting Ready */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Computing majors ==&lt;br /&gt;
If you are interested in computing, at ISU your options are Computer Science, Information Technology, Cyber &amp;amp; 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.&lt;br /&gt;
&lt;br /&gt;
== CS at ISU ==&lt;br /&gt;
Most programs that are called &amp;quot;Computer Science&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
== Getting Ready ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* [[Programming Practice]]&lt;br /&gt;
* http://code.org - go do some of their tutorials. These are mostly aimed at middle-school aged students, but is great experience and fun.&lt;br /&gt;
* Get a copy of Introduction to Algorithms (any edition) and start perusing it.&lt;br /&gt;
* http://appinventor.mit.edu/explore/ - make apps for Android.&lt;br /&gt;
* See our [[Help and Getting Started]] page.&lt;br /&gt;
* Install linux on one of your home computers (Ubuntu and Mint are pretty easy to use). Note - do it on a computer that doesn&#039;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.&lt;br /&gt;
* Some key ideas in CS and examples -&lt;br /&gt;
** Algorithm - linear search vs. binary search, selection sort vs. merge sort, Euclid&#039;s algorithm vs. trial division&lt;br /&gt;
** 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]&lt;br /&gt;
** Data speeds - tape vs. hard disk drive vs. RAM vs. CPU cache vs. CPU registers&lt;br /&gt;
** Abstraction - operating system virtual memory, RAID, object-oriented programming, file system, any API, any programming language&lt;br /&gt;
** Assembly language - [https://en.wikipedia.org/wiki/Little_man_computer little man computer] ([http://robowriter.info/little-man-computer/ simulator])&lt;br /&gt;
* Some classic beginning programming projects -&lt;br /&gt;
** Encryption - Caesar cipher, substitution cipher, Vigenere, RSA, and others&lt;br /&gt;
** Letter and word frequency - used in breaking substitution cipher, used in AI&lt;br /&gt;
** Chatbot - responds in a reasonable way to many text, see Eliza (&amp;quot;the doctor&amp;quot;)&lt;br /&gt;
** Choose your adventure game&lt;br /&gt;
** 2d maze/dungeon crawler&lt;br /&gt;
** Arithmetic quiz and tables - for kids learning their math facts&lt;br /&gt;
** Paint&lt;br /&gt;
** Drawing shapes - regular polygons, stars, fractals&lt;br /&gt;
** Board game - tic tac toe, connect 4, chess, you name it&lt;br /&gt;
** Calculator - with usual operations but also with your own cutsom ones&lt;br /&gt;
&lt;br /&gt;
== Other Helpful Resources ==&lt;br /&gt;
* [https://developer.android.com/ Make Android applications]&lt;br /&gt;
* [https://developer.apple.com/ Make iOS applications]&lt;br /&gt;
* [https://www.jetbrains.com/student Development tools for students]&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=Beginning_Programming&amp;diff=838</id>
		<title>Beginning Programming</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=Beginning_Programming&amp;diff=838"/>
		<updated>2026-06-04T19:43:10Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: /* Getting Ready */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Computing majors ==&lt;br /&gt;
If you are interested in computing, at ISU your options are Computer Science, Information Technology, Cyber &amp;amp; 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.&lt;br /&gt;
&lt;br /&gt;
== CS at ISU ==&lt;br /&gt;
Most programs that are called &amp;quot;Computer Science&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
== Getting Ready ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* [[Programming Practice]]&lt;br /&gt;
* http://code.org - go do some of their tutorials. These are mostly aimed at middle-school aged students, but is great experience and fun.&lt;br /&gt;
* Get a copy of Introduction to Algorithms (any edition) and start perusing it.&lt;br /&gt;
* http://appinventor.mit.edu/explore/ - make apps for Android.&lt;br /&gt;
* See our [[Help and Getting Started]] page and [http://cs.indstate.edu/info/learn.html Learn].&lt;br /&gt;
* Install linux on one of your home computers (Ubuntu and Mint are pretty easy to use). Note - do it on a computer that doesn&#039;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.&lt;br /&gt;
* Some key ideas in CS and examples -&lt;br /&gt;
** Algorithm - linear search vs. binary search, selection sort vs. merge sort, euclid&#039;s algorithm vs. trial division&lt;br /&gt;
** 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]&lt;br /&gt;
** Data speeds - tape vs. hard disk drive vs. RAM vs. CPU cache vs. CPU registers&lt;br /&gt;
** Abstraction - operating system virtual memory, RAID, object-oriented programming, file system, any API, any programming language&lt;br /&gt;
** Assembly language - [https://en.wikipedia.org/wiki/Little_man_computer little man computer] ([http://robowriter.info/little-man-computer/ simulator])&lt;br /&gt;
* Some classic beginning programming projects -&lt;br /&gt;
** Encryption - Caesar cipher, substitution cipher, Vigenere, RSA, and others&lt;br /&gt;
** Letter and word frequency - used in breaking substitution cipher, used in AI&lt;br /&gt;
** Chatbot - responds in a reasonable way to many text, see Eliza (&amp;quot;the doctor&amp;quot;)&lt;br /&gt;
** Choose your adventure game&lt;br /&gt;
** 2d maze/dungeon crawler&lt;br /&gt;
** Arithmetic quiz and tables - for kids learning their math facts&lt;br /&gt;
** Paint&lt;br /&gt;
** Drawing shapes - regular polygons, stars, fractals&lt;br /&gt;
** Board game - tic tac toe, connect 4, chess, you name it&lt;br /&gt;
** Calculator - with usual operations but also with your own cutsom ones&lt;br /&gt;
&lt;br /&gt;
== Other Helpful Resources ==&lt;br /&gt;
* [https://developer.android.com/ Make Android applications]&lt;br /&gt;
* [https://developer.apple.com/ Make iOS applications]&lt;br /&gt;
* [https://www.jetbrains.com/student Development tools for students]&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=Beginning_Programming&amp;diff=837</id>
		<title>Beginning Programming</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=Beginning_Programming&amp;diff=837"/>
		<updated>2026-06-04T19:42:39Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: /* Getting Ready */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Computing majors ==&lt;br /&gt;
If you are interested in computing, at ISU your options are Computer Science, Information Technology, Cyber &amp;amp; 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.&lt;br /&gt;
&lt;br /&gt;
== CS at ISU ==&lt;br /&gt;
Most programs that are called &amp;quot;Computer Science&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
== Getting Ready ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* [[Programming Practice]]&lt;br /&gt;
&lt;br /&gt;
* http://code.org - go do some of their tutorials. These are mostly aimed at middle-school aged students, but is great experience and fun.&lt;br /&gt;
* http://hackerrank.com - create an account and start doing basic programming problems. This site is great because your answer won&#039;t be accepted until it is 100% correct.&lt;br /&gt;
* [https://www.youtube.com/playlist?list=PLCFNfZsc2MIByWxTX2Zjg0wJpk1YXbcQ8 CS 151] - check out Jeff Kinne&#039;s video lectures from CS 151, the first course in our major.&lt;br /&gt;
* [https://www.youtube.com/playlist?list=PLXFP6J47Bp0fxKk5q6V_K2_3DkPIdGmMf AI] - video playlist from high school summer honors course at ISU from 2017.&lt;br /&gt;
* Get a copy of Introduction to Algorithms (any edition) and start perusing it.&lt;br /&gt;
* http://appinventor.mit.edu/explore/ - make apps for Android.&lt;br /&gt;
* See our [[Help and Getting Started]] page and [http://cs.indstate.edu/info/learn.html Learn].&lt;br /&gt;
* Install linux on one of your home computers (Ubuntu and Mint are pretty easy to use). Note - do it on a computer that doesn&#039;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.&lt;br /&gt;
* Some key ideas in CS and examples -&lt;br /&gt;
** Algorithm - linear search vs. binary search, selection sort vs. merge sort, euclid&#039;s algorithm vs. trial division&lt;br /&gt;
** 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]&lt;br /&gt;
** Data speeds - tape vs. hard disk drive vs. RAM vs. CPU cache vs. CPU registers&lt;br /&gt;
** Abstraction - operating system virtual memory, RAID, object-oriented programming, file system, any API, any programming language&lt;br /&gt;
** Assembly language - [https://en.wikipedia.org/wiki/Little_man_computer little man computer] ([http://robowriter.info/little-man-computer/ simulator])&lt;br /&gt;
* Some classic beginning programming projects -&lt;br /&gt;
** Encryption - Caesar cipher, substitution cipher, Vigenere, RSA, and others&lt;br /&gt;
** Letter and word frequency - used in breaking substitution cipher, used in AI&lt;br /&gt;
** Chatbot - responds in a reasonable way to many text, see Eliza (&amp;quot;the doctor&amp;quot;)&lt;br /&gt;
** Choose your adventure game&lt;br /&gt;
** 2d maze/dungeon crawler&lt;br /&gt;
** Arithmetic quiz and tables - for kids learning their math facts&lt;br /&gt;
** Paint&lt;br /&gt;
** Drawing shapes - regular polygons, stars, fractals&lt;br /&gt;
** Board game - tic tac toe, connect 4, chess, you name it&lt;br /&gt;
** Calculator - with usual operations but also with your own cutsom ones&lt;br /&gt;
&lt;br /&gt;
== Other Helpful Resources ==&lt;br /&gt;
* [https://developer.android.com/ Make Android applications]&lt;br /&gt;
* [https://developer.apple.com/ Make iOS applications]&lt;br /&gt;
* [https://www.jetbrains.com/student Development tools for students]&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=Beginning_Programming&amp;diff=836</id>
		<title>Beginning Programming</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=Beginning_Programming&amp;diff=836"/>
		<updated>2026-06-04T19:41:16Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: /* Computing majors */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Computing majors ==&lt;br /&gt;
If you are interested in computing, at ISU your options are Computer Science, Information Technology, Cyber &amp;amp; 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.&lt;br /&gt;
&lt;br /&gt;
== CS at ISU ==&lt;br /&gt;
Most programs that are called &amp;quot;Computer Science&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
== Getting Ready ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* http://code.org - go do some of their tutorials. These are mostly aimed at middle-school aged students, but is great experience and fun.&lt;br /&gt;
* http://hackerrank.com - create an account and start doing basic programming problems. This site is great because your answer won&#039;t be accepted until it is 100% correct.&lt;br /&gt;
* [https://www.youtube.com/playlist?list=PLCFNfZsc2MIByWxTX2Zjg0wJpk1YXbcQ8 CS 151] - check out Jeff Kinne&#039;s video lectures from CS 151, the first course in our major.&lt;br /&gt;
* [https://www.youtube.com/playlist?list=PLXFP6J47Bp0fxKk5q6V_K2_3DkPIdGmMf AI] - video playlist from high school summer honors course at ISU from 2017.&lt;br /&gt;
* Get a copy of Introduction to Algorithms (any edition) and start perusing it.&lt;br /&gt;
* http://appinventor.mit.edu/explore/ - make apps for Android.&lt;br /&gt;
* See our [[Help and Getting Started]] page and [http://cs.indstate.edu/info/learn.html Learn].&lt;br /&gt;
* Install linux on one of your home computers (Ubuntu and Mint are pretty easy to use). Note - do it on a computer that doesn&#039;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.&lt;br /&gt;
* Some key ideas in CS and examples -&lt;br /&gt;
** Algorithm - linear search vs. binary search, selection sort vs. merge sort, euclid&#039;s algorithm vs. trial division&lt;br /&gt;
** 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]&lt;br /&gt;
** Data speeds - tape vs. hard disk drive vs. RAM vs. CPU cache vs. CPU registers&lt;br /&gt;
** Abstraction - operating system virtual memory, RAID, object-oriented programming, file system, any API, any programming language&lt;br /&gt;
** Assembly language - [https://en.wikipedia.org/wiki/Little_man_computer little man computer] ([http://robowriter.info/little-man-computer/ simulator])&lt;br /&gt;
* Some classic beginning programming projects -&lt;br /&gt;
** Encryption - Caesar cipher, substitution cipher, Vigenere, RSA, and others&lt;br /&gt;
** Letter and word frequency - used in breaking substitution cipher, used in AI&lt;br /&gt;
** Chatbot - responds in a reasonable way to many text, see Eliza (&amp;quot;the doctor&amp;quot;)&lt;br /&gt;
** Choose your adventure game&lt;br /&gt;
** 2d maze/dungeon crawler&lt;br /&gt;
** Arithmetic quiz and tables - for kids learning their math facts&lt;br /&gt;
** Paint&lt;br /&gt;
** Drawing shapes - regular polygons, stars, fractals&lt;br /&gt;
** Board game - tic tac toe, connect 4, chess, you name it&lt;br /&gt;
** Calculator - with usual operations but also with your own cutsom ones&lt;br /&gt;
&lt;br /&gt;
== Other Helpful Resources ==&lt;br /&gt;
* [https://developer.android.com/ Make Android applications]&lt;br /&gt;
* [https://developer.apple.com/ Make iOS applications]&lt;br /&gt;
* [https://www.jetbrains.com/student Development tools for students]&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=ISU_Computer_Science&amp;diff=835</id>
		<title>ISU Computer Science</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=ISU_Computer_Science&amp;diff=835"/>
		<updated>2026-06-04T19:39:07Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: /* More information */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki is used to keep detailed information related to the CS programs at ISU.  If you want to see marketing information about CS at ISU, you can go to the [https://indianastate.edu/ ISU home page] and do a search for computer science.&lt;br /&gt;
&lt;br /&gt;
==Main links/information==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Contact/people&#039;&#039;&#039; - [[ISU CS People]], [https://cs.indstate.edu/web/index.php/ISU_CS_People#CS_Departmental_Graduate_Assistants GA Office Hours]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Admissions&#039;&#039;&#039; - [[Undergraduate Admissions]], [[Graduate Admissions]], [[For New Graduate Students]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CS Programs&#039;&#039;&#039; - [[CS Programs]] ([https://catalog.indstate.edu/preview_program.php?catoid=67&amp;amp;poid=12305&amp;amp;returnto=4228 BS], [https://catalog.indstate.edu/preview_program.php?catoid=67&amp;amp;poid=12306&amp;amp;returnto=4228 minor], [https://catalog.indstate.edu/preview_program.php?catoid=67&amp;amp;poid=12279&amp;amp;returnto=4228 certificate], [https://catalog.indstate.edu/preview_program.php?catoid=67&amp;amp;poid=12561&amp;amp;returnto=4228 teaching minor]), ([https://catalog.indstate.edu/preview_program.php?catoid=65&amp;amp;poid=11704&amp;amp;returnto=3879 MS], [https://catalog.indstate.edu/preview_program.php?catoid=67&amp;amp;poid=12632&amp;amp;returnto=4228 4+1 MS])&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Advising&#039;&#039;&#039; - [[Undergraduate Advising]], [[Graduate Advising]], [[Courses]] ( [https://cs.indstate.edu/info/course_schedule.php class schedule], [https://catalog.indstate.edu/content.php?filter%5B27%5D=CS&amp;amp;filter%5B29%5D=&amp;amp;filter%5Bcourse_type%5D=-1&amp;amp;filter%5Bkeyword%5D=&amp;amp;filter%5B32%5D=1&amp;amp;filter%5Bcpage%5D=1&amp;amp;cur_cat_oid=67&amp;amp;expand=&amp;amp;navoid=4229&amp;amp;search_database=Filter#acalog_template_course_filter ugrad courses], [https://catalog.indstate.edu/content.php?filter%5B27%5D=CS&amp;amp;filter%5B29%5D=&amp;amp;filter%5Bkeyword%5D=&amp;amp;filter%5B32%5D=1&amp;amp;filter%5Bcpage%5D=1&amp;amp;cur_cat_oid=65&amp;amp;expand=&amp;amp;navoid=3880&amp;amp;search_database=Filter#acalog_template_course_filter grad courses])&lt;br /&gt;
&lt;br /&gt;
[[Start of Term Announcements]], [[Welcome New Students]], [[Course Scheduling Announcements]], [[Statement On Cheating]], &#039;&#039;&#039;[[Visit]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==More information==&lt;br /&gt;
* [[Policies]]&lt;br /&gt;
* [[Procedures]]&lt;br /&gt;
* [[FAQ]]&lt;br /&gt;
* [[CS Help and Getting Started]]&lt;br /&gt;
* [[Programming Practice]]&lt;br /&gt;
* [[Giving]]&lt;br /&gt;
* [[Careers]]&lt;br /&gt;
* Events - &#039;&#039;&#039;[[Science Bowl]]&#039;&#039;&#039;, [[Museum]]&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
Pages that are old and no longer current - [https://cs.indstate.edu/info/cs-homeroom.html IndianaComputes], [http://www.indstate.edu/cas/bd4isu BD4ISU], [http://cs.indstate.edu/acm/ ACM], [https://cs.indstate.edu/info/research.html Research], [https://cs.indstate.edu/acm/contests.html programming contests], [https://www.indstate.edu/cas/chem_phys/summer-undergraduate-research-experiences-sure-program SURE], [[Seminar]]&lt;br /&gt;
&lt;br /&gt;
[[Media_Wiki|Help / Getting Started on Media Wiki]]&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=Programming_and_CS_-_Getting_Started&amp;diff=834</id>
		<title>Programming and CS - Getting Started</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=Programming_and_CS_-_Getting_Started&amp;diff=834"/>
		<updated>2026-06-03T02:07:24Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: /* Practice Programming Contest Problems */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
=Recommended Computer=&lt;br /&gt;
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.  &lt;br /&gt;
&lt;br /&gt;
All other things being equal, getting a computer that is not &amp;quot;bottom of the barrel&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
You should also have the ability to install programs on the system and have a normally reliable internet connection at home if possible.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
University recommendations are listed [https://indstate.teamdynamix.com/TDClient/1851/Portal/KB/Article/71665/Student-Laptop-Minimum-Specifications here] and are similar to that described above.&lt;br /&gt;
&lt;br /&gt;
=Getting Started Pages=&lt;br /&gt;
* [[Linux and CS Systems - Getting Started]]&lt;br /&gt;
* [[Python Programming - Getting Started]]&lt;br /&gt;
* [[C Programming - Getting Started]]&lt;br /&gt;
* [[R Programming - Getting Started]]&lt;br /&gt;
* [[Algorithms and Data Structures - Getting Started]]&lt;br /&gt;
* [[Gitlab - Getting Started]]&lt;br /&gt;
&lt;br /&gt;
=Practice Programming Contest Problems=&lt;br /&gt;
See [[Programming Practice]].&lt;br /&gt;
&lt;br /&gt;
= Source Control =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* https://try.github.io/&lt;br /&gt;
* https://learngitbranching.js.org/&lt;br /&gt;
* https://www.atlassian.com/git&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=Programming_and_CS_-_Getting_Started&amp;diff=833</id>
		<title>Programming and CS - Getting Started</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=Programming_and_CS_-_Getting_Started&amp;diff=833"/>
		<updated>2026-06-03T02:06:36Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: /* Getting Started Pages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
=Recommended Computer=&lt;br /&gt;
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.  &lt;br /&gt;
&lt;br /&gt;
All other things being equal, getting a computer that is not &amp;quot;bottom of the barrel&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
You should also have the ability to install programs on the system and have a normally reliable internet connection at home if possible.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
University recommendations are listed [https://indstate.teamdynamix.com/TDClient/1851/Portal/KB/Article/71665/Student-Laptop-Minimum-Specifications here] and are similar to that described above.&lt;br /&gt;
&lt;br /&gt;
=Getting Started Pages=&lt;br /&gt;
* [[Linux and CS Systems - Getting Started]]&lt;br /&gt;
* [[Python Programming - Getting Started]]&lt;br /&gt;
* [[C Programming - Getting Started]]&lt;br /&gt;
* [[R Programming - Getting Started]]&lt;br /&gt;
* [[Algorithms and Data Structures - Getting Started]]&lt;br /&gt;
* [[Gitlab - Getting Started]]&lt;br /&gt;
&lt;br /&gt;
=Practice Programming Contest Problems=&lt;br /&gt;
These are problems with precisely defined correct output, so that you can submit your program to make sure it is 100% correct.&lt;br /&gt;
&lt;br /&gt;
* [http://www.hackerrank.com/ Hacker Rank] - very user-friendly, different programming languages available, different categories of questions&lt;br /&gt;
* [https://open.kattis.com/problems Practice problems] at open.kattis.com (sort by difficulty or solved % to try the easiest ones first)&lt;br /&gt;
* [http://cs.indstate.edu/acm/contests.html ISU ACM Club&#039;s Contest Problem page]&lt;br /&gt;
* [http://cs.indstate.edu/~jkinne/Cpractice/ A few simple practice problems], with solutions to some on the CS server. See the .txt files.&lt;br /&gt;
&lt;br /&gt;
= Source Control =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* https://try.github.io/&lt;br /&gt;
* https://learngitbranching.js.org/&lt;br /&gt;
* https://www.atlassian.com/git&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=Programming_and_CS_-_Getting_Started&amp;diff=832</id>
		<title>Programming and CS - Getting Started</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=Programming_and_CS_-_Getting_Started&amp;diff=832"/>
		<updated>2026-06-03T02:06:16Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: /* Recommended Computer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
=Recommended Computer=&lt;br /&gt;
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.  &lt;br /&gt;
&lt;br /&gt;
All other things being equal, getting a computer that is not &amp;quot;bottom of the barrel&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
You should also have the ability to install programs on the system and have a normally reliable internet connection at home if possible.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
University recommendations are listed [https://indstate.teamdynamix.com/TDClient/1851/Portal/KB/Article/71665/Student-Laptop-Minimum-Specifications here] and are similar to that described above.&lt;br /&gt;
&lt;br /&gt;
=Getting Started Pages=&lt;br /&gt;
* [[Linux and CS Systems - Getting Started]]&lt;br /&gt;
* [[Handin|Handin - The CS Assignment Handin System]]&lt;br /&gt;
* [[Python Programming - Getting Started]]&lt;br /&gt;
* [[C Programming - Getting Started]]&lt;br /&gt;
* [[R Programming - Getting Started]]&lt;br /&gt;
* [[Algorithms and Data Structures - Getting Started]]&lt;br /&gt;
* [[Gitlab - Getting Started]]&lt;br /&gt;
&lt;br /&gt;
=Practice Programming Contest Problems=&lt;br /&gt;
These are problems with precisely defined correct output, so that you can submit your program to make sure it is 100% correct.&lt;br /&gt;
&lt;br /&gt;
* [http://www.hackerrank.com/ Hacker Rank] - very user-friendly, different programming languages available, different categories of questions&lt;br /&gt;
* [https://open.kattis.com/problems Practice problems] at open.kattis.com (sort by difficulty or solved % to try the easiest ones first)&lt;br /&gt;
* [http://cs.indstate.edu/acm/contests.html ISU ACM Club&#039;s Contest Problem page]&lt;br /&gt;
* [http://cs.indstate.edu/~jkinne/Cpractice/ A few simple practice problems], with solutions to some on the CS server. See the .txt files.&lt;br /&gt;
&lt;br /&gt;
= Source Control =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* https://try.github.io/&lt;br /&gt;
* https://learngitbranching.js.org/&lt;br /&gt;
* https://www.atlassian.com/git&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=CS_accounts&amp;diff=831</id>
		<title>CS accounts</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=CS_accounts&amp;diff=831"/>
		<updated>2026-06-03T02:02:42Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: /* Spring 2026 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page gives information about logging into and using the CS server (cs.indstate.edu). For help about getting started with using the terminal once you can login, see [[Linux and CS Systems - Getting Started]].&lt;br /&gt;
&lt;br /&gt;
=Logging In=&lt;br /&gt;
The CS server is a Linux server. The primary ways you will login to the server is either (a) with a terminal (aka shell) that allows you to type text commands, or (b) with an sftp program to transfer files between your computer and the server. In either case, you need a username (aka login) and password. There are two types of accounts on the system - ISU portal accounts, and local accounts.&lt;br /&gt;
&lt;br /&gt;
==ISU Portal Accounts==&lt;br /&gt;
Any student/faculty/staff who is involved in CS courses or programs (enrolled in a course, teaching a course, etc.) can login to cs.indstate.edu using their full ISU email address and portal password. The first time you login to the system, an account is created on the system that you can use. It will set your home directory on the system to &amp;lt;code&amp;gt;/home/SID@isuad.indstate.edu/&amp;lt;/code&amp;gt; where &amp;lt;code&amp;gt;SID&amp;lt;/code&amp;gt; is your portal id (aka sycamore id - for students it is the part before the @sycamores in your email address). After logging in, you can run the &amp;lt;code&amp;gt;pwd&amp;lt;/code&amp;gt; command to see this.&lt;br /&gt;
&lt;br /&gt;
For those familiar with Linux already... Note that there is not currently &amp;quot;finger information&amp;quot; about ISU portal account users. In fact, trying to run something like &amp;quot;finger jkinne@isuad.indstate.edu&amp;quot; will fail. Note that instructors of current courses can get a class list (aka roster) of accounts for their course; see below.&lt;br /&gt;
&lt;br /&gt;
==Local Accounts==&lt;br /&gt;
Some users will have accounts on the CS server that are not tied to their ISU portal accounts. For example, CS faculty have local accounts, and a number of users of the server prior to 2025 have local accounts. These are accounts with username and password that were created just on the server (the ability to login to the server with ISU portal credentials was added in 2025). Any new instructor teaching a CS course can ask for a local account if you do not have one already - write to root@cs.indstate.edu.&lt;br /&gt;
&lt;br /&gt;
==SSH Key==&lt;br /&gt;
You can setup an SSH key to login to the system. You will first need to login to the system normally. Once you are logged in, you can run the following commands.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/.ssh     # in case it does not exist yet&lt;br /&gt;
chmod 700 ~/.ssh # make sure this directory is not accessible to other users&lt;br /&gt;
ssh-keygen       # create keys for logging in&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
You will then transfer the private key file (the one that does not end in .pub) to your local computer in the location for ssh keys. This varies depending on your operating system. On Linux and Mac OS, it will be in &amp;lt;code&amp;gt;~/.ssh&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= CS Server Policies =&lt;br /&gt;
== Prohibitions ==&lt;br /&gt;
For any accounts that you have on the CS server, you should follow all ISU policies.  In particular the following are prohibited - &lt;br /&gt;
* using your account to store or distribute anything that is against its terms/copyright/etc. (e.g., no movies, textbooks, answers to HW problems)&lt;br /&gt;
* using your account to do anything that is illegal&lt;br /&gt;
* using a password that is too easy to guess (i.e., a password cracker that we run finds your password)&lt;br /&gt;
* overloading the CPU or GPU of the system, or filling up any of the system drives&lt;br /&gt;
* anything that is along these lines that we have not thought to state explicitly&lt;br /&gt;
A violation of any of these will result in your account being locked and no longer being allowed to have an account on the systems.&lt;br /&gt;
&lt;br /&gt;
== Inactivity ==&lt;br /&gt;
Accounts that are not used for a period of 6 months will likely be locked as a security precaution. You can write to root@cs.indstate.edu to ask to have your account unlocked again.&lt;br /&gt;
&lt;br /&gt;
=Student Use and Course Account=&lt;br /&gt;
For courses that are currently being offered, if the course uses the server, a class account is created that the instructor of the course can use if they like. This is explained in this section with two examples: CS 151 Intro to Computer Science, and CS 473/573 Computer Networks.&lt;br /&gt;
&lt;br /&gt;
==Course Account==&lt;br /&gt;
An account on the system is created where files for the class can be kept that are to be shared with the students. For CS 151, the account created has username &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt;. For CS 473/573, a single account, &amp;lt;code&amp;gt;cs473&amp;lt;/code&amp;gt;, is created that is to be used for both courses.&lt;br /&gt;
&lt;br /&gt;
==Student Use==&lt;br /&gt;
For students who are currently enrolled in a CS course that uses the server, the first time you login to the system with your ISU portal account, a directory should be created within your account for the course. For example, students in CS 151 will have a directory &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt;, and students in CS 473/573 will have a directory &amp;lt;code&amp;gt;cs473&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Permissions are set on the system so that instructors of the course have read access to the files within student&#039;s course directories for their courses. The instructor for CS 151 will have read access to the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directories of the students enrolled in CS 151; the instructor for CS 473/573 will have read access to the &amp;lt;code&amp;gt;cs473&amp;lt;/code&amp;gt; directories of the students enrolled in CS 473/573; etc. The instructor of the course might have the students submit their work on the server within these directories. Each instructor can choose how they would like to do this.&lt;br /&gt;
&lt;br /&gt;
The course account for each course also has read access to the directories for that course. For example, the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; account will have read access to the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directories within any student enrolled in CS 151.&lt;br /&gt;
&lt;br /&gt;
==Course Account - Instructor Private Files==&lt;br /&gt;
The course account is created with a &amp;lt;code&amp;gt;~/private&amp;lt;/code&amp;gt; directory that is not accessible to other users (i.e., not accessible to students). The class list (aka roster) of students and their accounts is put into this directory (&amp;lt;code&amp;gt;classlist_brief.csv&amp;lt;/code&amp;gt; with the most important information for each student, and &amp;lt;code&amp;gt;classlist_full.csv&amp;lt;/code&amp;gt; with more information). The instructor could keep other files in this &amp;lt;code&amp;gt;private&amp;lt;/code&amp;gt; directory that is meant to be private (e.g., model solutions or grading information).&lt;br /&gt;
&lt;br /&gt;
Inside the &amp;lt;code&amp;gt;~/private/&amp;lt;/code&amp;gt; directory of the course account, there is also a &amp;lt;code&amp;gt;students&amp;lt;/code&amp;gt; directory that has symbolic links to each of the student&#039;s course directories in the course. For example, if the course is cs151, and if the user jdoe12345@isuad.indstate.edu is a student in the course, then there will be a link &amp;lt;code&amp;gt;/home/cs151/private/students/jdoe12345@isuad.indstate.edu&amp;lt;/code&amp;gt; that is a link to the cs151 directory for this student (&amp;lt;code&amp;gt;/home/jdoe12345@isuad.indstate.edu/cs151/&amp;lt;/code&amp;gt;). The instructor for the course can quickly get into the students&#039; directories for the course (but not their home directory) by going to the private/students/ directory and going from there.&lt;br /&gt;
&lt;br /&gt;
The accounts for the instructors of the course are set so they can sudo as the course account. If the instructor of CS 151 uses the local account &amp;lt;code&amp;gt;jkinne&amp;lt;/code&amp;gt; then this user can run the following command to get a shell running as the CS 151 course account: &amp;lt;code&amp;gt;sudo -u cs151 -i&amp;lt;/code&amp;gt;.&lt;br /&gt;
Note that this only works for local accounts, and does not work for ISU Portal accounts (it might work for the jkinne local account but not for the jkinne@isuad.indstate.edu account).&lt;br /&gt;
&lt;br /&gt;
====Change of Semester and Backups====&lt;br /&gt;
Before the next semester, a backup copy of each course account will be created that will be in the course&#039;s &amp;lt;code&amp;gt;~/private/backup/&amp;lt;/code&amp;gt; directory. A directory will be created for the term, and it will have all of the course account&#039;s files from that term within it.&lt;br /&gt;
&lt;br /&gt;
Once the backup has been created for the previous term, the instructor for the current semester can remove files and directories that are no longer needed for the new term. For example, you can clear out the assignment directories in the course account&#039;s home directory, and also the student submissions that are in &amp;lt;code&amp;gt;~/private/submissions/&amp;lt;/code&amp;gt;. Those files will still be in the backup directory in case you need them later. &lt;br /&gt;
&lt;br /&gt;
When the new semester starts (if the course is running in the new semester), the following in the &amp;lt;code&amp;gt;~/private&amp;lt;/code&amp;gt; directory will be updated to be for the new term: classlist_brief.csv, classlist_full.csv, students directory (symbolic links to new semester&#039;s students).&lt;br /&gt;
&lt;br /&gt;
==Assignments==&lt;br /&gt;
Any directory within the course account can be used as an assignment. For example, suppose the account &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; contains a directory &amp;lt;code&amp;gt;h7&amp;lt;/code&amp;gt;. This directory might have files for the students to use on the assignment; they can view these files by going to the directory &amp;lt;code&amp;gt;/home/cs151/h7/&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
A student can &amp;quot;checkout&amp;quot; or &amp;quot;get&amp;quot; an assignment by running&lt;br /&gt;
&amp;lt;pre&amp;gt;hw_get.py cs151 h7&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will copy the &amp;lt;code&amp;gt;h7&amp;lt;/code&amp;gt; directory that is in the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; account into the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directory of the user that executes the command.&lt;br /&gt;
&lt;br /&gt;
An instructor can collect an assignment by running the script &amp;lt;code&amp;gt;hw_collect.py&amp;lt;/code&amp;gt;. For the above example, the instructor would run: &amp;lt;code&amp;gt;hw_collect.py cs151 h7&amp;lt;/code&amp;gt;. This will go into each student in the course&#039;s &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directory and copy their h7 directory into &amp;lt;code&amp;gt;/home/cs151/private/submissions/h7/&amp;lt;/code&amp;gt;. There will be a new directory in that submissions directory for the date and time the submissions were collected. For example, if the user jdoe12345@isuad.indstate.edu is in the cs151 course, then the contents of &amp;lt;code&amp;gt;/home/jdoe12345@isuad.indstate.edu/h7/&amp;lt;/code&amp;gt; will be copied into the submission directory (inside of &amp;lt;code&amp;gt;/home/cs151/private/submissions/h7/&amp;lt;/code&amp;gt;). The directory &amp;lt;code&amp;gt;/home/cs151/private/submissions/h7/&amp;lt;/code&amp;gt; will have a symbolic link &amp;lt;code&amp;gt;latest&amp;lt;/code&amp;gt; that is a pointer to the latest submission.&lt;br /&gt;
&lt;br /&gt;
There is a system in place that can be used for auto-checking the output of student programs. The instructor creates a file &amp;lt;code&amp;gt;.tests.json&amp;lt;/code&amp;gt; inside of the assignment directory that has the test cases. The instructor will also need to create a correct working version of each program that can be run to get the &amp;quot;correct&amp;quot; results. The students will use the &amp;lt;code&amp;gt;hw_check.py&amp;lt;/code&amp;gt; command to check their output. The instructor can also use the same command to check student submissions. You can get more details about how this works by logging into the system and running: &amp;lt;code&amp;gt;hw_check.py --help&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=Websites / Webservers=&lt;br /&gt;
==Apache==&lt;br /&gt;
The main cs.indstate.edu website uses the Apache web server. This is configured so that any user can put html and php files in the right directory in their account to be on the web server. Jeff Kinne, who has portal id &amp;lt;code&amp;gt;jkinne&amp;lt;/code&amp;gt; and therefore account on the server with home directory &amp;lt;code&amp;gt;jkinne@isuad.indstate.edu&amp;lt;/code&amp;gt;, would do the following to create the right directories.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~jkinne@isuad.indstate.edu   # jkinne&#039;s home directory&lt;br /&gt;
mkdir public_html               # directory apache looks in for website files&lt;br /&gt;
setfacl -m group:www-data:x .   # give apache execute access to home directory&lt;br /&gt;
setfacl -R -m group:www-data:rX public_html          # give apache rX access to public_html&lt;br /&gt;
setfacl -R -m default:group:www-data:rX public_html  # and new files will also have access&lt;br /&gt;
cd public_html                  # go into that directory&lt;br /&gt;
echo &amp;quot;Hello world&amp;quot; &amp;gt; index.html # write a hello world file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then the file index.html will be accessible on the web at https://cs.indstate.edu/~jkinne@isuad.indstate.edu. Since the web server is Apache, you can look for help on the Apache web server about configuration options (in particular .htaccess files that you can put in your public_html directory to change some settings). By default, the Apache web server understands html and php files. There may be other types of files you would want it to be able to understand; if so you can write to root@cs.indstate.edu.&lt;br /&gt;
&lt;br /&gt;
==Node, Django, etc.==&lt;br /&gt;
Node, Django, and many other web server frameworks can also be run off of the CS server. These generally will pick a port that they will run off of, and you run the main file for your server. Note that the Apache web server uses the &amp;quot;standard&amp;quot; ports (80 for http and 443 for https), so you cannot use those. If you want to run a Node, Django, or similar web server off of the CS server, you need to pick a port that isn&#039;t used for anything else. You should never pick a port number that is below 1024 and really should avoid port numbers below 10000. If you want to make sure to pick a port that will not interfere with anything, write to root@cs.indstate.edu. If you were to run your node web server with port 60000, then you would browse to it on the web at https://cs.indstate.edu:60000. Note that there is indeed normally a node server running on that particular port.&lt;br /&gt;
&lt;br /&gt;
=Spring 2026=&lt;br /&gt;
The following is the list of courses that are supported on the server for the 2026 spring, along with the instructor accounts (aka admin accounts) for each course.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
course,admin_accounts&lt;br /&gt;
cs151,&amp;quot;jkinne,jeff,jkinne@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs170,&amp;quot;hrafieipour@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs201,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs203,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs211,&amp;quot;mjenkins1@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs351,&amp;quot;rabhyankar@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs331,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs401,cs501&amp;quot;,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs401L,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs456,cs556&amp;quot;,&amp;quot;jcompton5,jcompton5@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs456L,&amp;quot;jcompton5,jcompton5@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs457,cs557&amp;quot;,&amp;quot;kwexoo,kexoo@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs457L,&amp;quot;kwexoo,kexoo@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs458,cs558&amp;quot;,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs458L,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs469,cs569&amp;quot;,&amp;quot;katterson1,katterson1@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs475,cs575&amp;quot;,&amp;quot;rabhyankar@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs500,&amp;quot;jkinne,jeff,jkinne@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs600,&amp;quot;arash,arafiey@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs601,cs417&amp;quot;,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs609,&amp;quot;katterson1,katterson1@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs611,&amp;quot;rabhyankar@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs618,&amp;quot;shosseini@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs685,&amp;quot;arash,arafiey@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs695,&amp;quot;arash,arafiey@isuad.indstate.edu&amp;quot;&lt;br /&gt;
ect438,&amp;quot;jkinne,jeff,jkinne@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If any course instructors would like any additions, subtractions, or changes to these, let the sys-admin know.&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=CS_accounts&amp;diff=830</id>
		<title>CS accounts</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=CS_accounts&amp;diff=830"/>
		<updated>2026-06-03T02:00:23Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: /* Assignments */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page gives information about logging into and using the CS server (cs.indstate.edu). For help about getting started with using the terminal once you can login, see [[Linux and CS Systems - Getting Started]].&lt;br /&gt;
&lt;br /&gt;
=Logging In=&lt;br /&gt;
The CS server is a Linux server. The primary ways you will login to the server is either (a) with a terminal (aka shell) that allows you to type text commands, or (b) with an sftp program to transfer files between your computer and the server. In either case, you need a username (aka login) and password. There are two types of accounts on the system - ISU portal accounts, and local accounts.&lt;br /&gt;
&lt;br /&gt;
==ISU Portal Accounts==&lt;br /&gt;
Any student/faculty/staff who is involved in CS courses or programs (enrolled in a course, teaching a course, etc.) can login to cs.indstate.edu using their full ISU email address and portal password. The first time you login to the system, an account is created on the system that you can use. It will set your home directory on the system to &amp;lt;code&amp;gt;/home/SID@isuad.indstate.edu/&amp;lt;/code&amp;gt; where &amp;lt;code&amp;gt;SID&amp;lt;/code&amp;gt; is your portal id (aka sycamore id - for students it is the part before the @sycamores in your email address). After logging in, you can run the &amp;lt;code&amp;gt;pwd&amp;lt;/code&amp;gt; command to see this.&lt;br /&gt;
&lt;br /&gt;
For those familiar with Linux already... Note that there is not currently &amp;quot;finger information&amp;quot; about ISU portal account users. In fact, trying to run something like &amp;quot;finger jkinne@isuad.indstate.edu&amp;quot; will fail. Note that instructors of current courses can get a class list (aka roster) of accounts for their course; see below.&lt;br /&gt;
&lt;br /&gt;
==Local Accounts==&lt;br /&gt;
Some users will have accounts on the CS server that are not tied to their ISU portal accounts. For example, CS faculty have local accounts, and a number of users of the server prior to 2025 have local accounts. These are accounts with username and password that were created just on the server (the ability to login to the server with ISU portal credentials was added in 2025). Any new instructor teaching a CS course can ask for a local account if you do not have one already - write to root@cs.indstate.edu.&lt;br /&gt;
&lt;br /&gt;
==SSH Key==&lt;br /&gt;
You can setup an SSH key to login to the system. You will first need to login to the system normally. Once you are logged in, you can run the following commands.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/.ssh     # in case it does not exist yet&lt;br /&gt;
chmod 700 ~/.ssh # make sure this directory is not accessible to other users&lt;br /&gt;
ssh-keygen       # create keys for logging in&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
You will then transfer the private key file (the one that does not end in .pub) to your local computer in the location for ssh keys. This varies depending on your operating system. On Linux and Mac OS, it will be in &amp;lt;code&amp;gt;~/.ssh&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= CS Server Policies =&lt;br /&gt;
== Prohibitions ==&lt;br /&gt;
For any accounts that you have on the CS server, you should follow all ISU policies.  In particular the following are prohibited - &lt;br /&gt;
* using your account to store or distribute anything that is against its terms/copyright/etc. (e.g., no movies, textbooks, answers to HW problems)&lt;br /&gt;
* using your account to do anything that is illegal&lt;br /&gt;
* using a password that is too easy to guess (i.e., a password cracker that we run finds your password)&lt;br /&gt;
* overloading the CPU or GPU of the system, or filling up any of the system drives&lt;br /&gt;
* anything that is along these lines that we have not thought to state explicitly&lt;br /&gt;
A violation of any of these will result in your account being locked and no longer being allowed to have an account on the systems.&lt;br /&gt;
&lt;br /&gt;
== Inactivity ==&lt;br /&gt;
Accounts that are not used for a period of 6 months will likely be locked as a security precaution. You can write to root@cs.indstate.edu to ask to have your account unlocked again.&lt;br /&gt;
&lt;br /&gt;
=Student Use and Course Account=&lt;br /&gt;
For courses that are currently being offered, if the course uses the server, a class account is created that the instructor of the course can use if they like. This is explained in this section with two examples: CS 151 Intro to Computer Science, and CS 473/573 Computer Networks.&lt;br /&gt;
&lt;br /&gt;
==Course Account==&lt;br /&gt;
An account on the system is created where files for the class can be kept that are to be shared with the students. For CS 151, the account created has username &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt;. For CS 473/573, a single account, &amp;lt;code&amp;gt;cs473&amp;lt;/code&amp;gt;, is created that is to be used for both courses.&lt;br /&gt;
&lt;br /&gt;
==Student Use==&lt;br /&gt;
For students who are currently enrolled in a CS course that uses the server, the first time you login to the system with your ISU portal account, a directory should be created within your account for the course. For example, students in CS 151 will have a directory &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt;, and students in CS 473/573 will have a directory &amp;lt;code&amp;gt;cs473&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Permissions are set on the system so that instructors of the course have read access to the files within student&#039;s course directories for their courses. The instructor for CS 151 will have read access to the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directories of the students enrolled in CS 151; the instructor for CS 473/573 will have read access to the &amp;lt;code&amp;gt;cs473&amp;lt;/code&amp;gt; directories of the students enrolled in CS 473/573; etc. The instructor of the course might have the students submit their work on the server within these directories. Each instructor can choose how they would like to do this.&lt;br /&gt;
&lt;br /&gt;
The course account for each course also has read access to the directories for that course. For example, the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; account will have read access to the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directories within any student enrolled in CS 151.&lt;br /&gt;
&lt;br /&gt;
==Course Account - Instructor Private Files==&lt;br /&gt;
The course account is created with a &amp;lt;code&amp;gt;~/private&amp;lt;/code&amp;gt; directory that is not accessible to other users (i.e., not accessible to students). The class list (aka roster) of students and their accounts is put into this directory (&amp;lt;code&amp;gt;classlist_brief.csv&amp;lt;/code&amp;gt; with the most important information for each student, and &amp;lt;code&amp;gt;classlist_full.csv&amp;lt;/code&amp;gt; with more information). The instructor could keep other files in this &amp;lt;code&amp;gt;private&amp;lt;/code&amp;gt; directory that is meant to be private (e.g., model solutions or grading information).&lt;br /&gt;
&lt;br /&gt;
Inside the &amp;lt;code&amp;gt;~/private/&amp;lt;/code&amp;gt; directory of the course account, there is also a &amp;lt;code&amp;gt;students&amp;lt;/code&amp;gt; directory that has symbolic links to each of the student&#039;s course directories in the course. For example, if the course is cs151, and if the user jdoe12345@isuad.indstate.edu is a student in the course, then there will be a link &amp;lt;code&amp;gt;/home/cs151/private/students/jdoe12345@isuad.indstate.edu&amp;lt;/code&amp;gt; that is a link to the cs151 directory for this student (&amp;lt;code&amp;gt;/home/jdoe12345@isuad.indstate.edu/cs151/&amp;lt;/code&amp;gt;). The instructor for the course can quickly get into the students&#039; directories for the course (but not their home directory) by going to the private/students/ directory and going from there.&lt;br /&gt;
&lt;br /&gt;
The accounts for the instructors of the course are set so they can sudo as the course account. If the instructor of CS 151 uses the local account &amp;lt;code&amp;gt;jkinne&amp;lt;/code&amp;gt; then this user can run the following command to get a shell running as the CS 151 course account: &amp;lt;code&amp;gt;sudo -u cs151 -i&amp;lt;/code&amp;gt;.&lt;br /&gt;
Note that this only works for local accounts, and does not work for ISU Portal accounts (it might work for the jkinne local account but not for the jkinne@isuad.indstate.edu account).&lt;br /&gt;
&lt;br /&gt;
====Change of Semester and Backups====&lt;br /&gt;
Before the next semester, a backup copy of each course account will be created that will be in the course&#039;s &amp;lt;code&amp;gt;~/private/backup/&amp;lt;/code&amp;gt; directory. A directory will be created for the term, and it will have all of the course account&#039;s files from that term within it.&lt;br /&gt;
&lt;br /&gt;
Once the backup has been created for the previous term, the instructor for the current semester can remove files and directories that are no longer needed for the new term. For example, you can clear out the assignment directories in the course account&#039;s home directory, and also the student submissions that are in &amp;lt;code&amp;gt;~/private/submissions/&amp;lt;/code&amp;gt;. Those files will still be in the backup directory in case you need them later. &lt;br /&gt;
&lt;br /&gt;
When the new semester starts (if the course is running in the new semester), the following in the &amp;lt;code&amp;gt;~/private&amp;lt;/code&amp;gt; directory will be updated to be for the new term: classlist_brief.csv, classlist_full.csv, students directory (symbolic links to new semester&#039;s students).&lt;br /&gt;
&lt;br /&gt;
==Assignments==&lt;br /&gt;
Any directory within the course account can be used as an assignment. For example, suppose the account &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; contains a directory &amp;lt;code&amp;gt;h7&amp;lt;/code&amp;gt;. This directory might have files for the students to use on the assignment; they can view these files by going to the directory &amp;lt;code&amp;gt;/home/cs151/h7/&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
A student can &amp;quot;checkout&amp;quot; or &amp;quot;get&amp;quot; an assignment by running&lt;br /&gt;
&amp;lt;pre&amp;gt;hw_get.py cs151 h7&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will copy the &amp;lt;code&amp;gt;h7&amp;lt;/code&amp;gt; directory that is in the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; account into the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directory of the user that executes the command.&lt;br /&gt;
&lt;br /&gt;
An instructor can collect an assignment by running the script &amp;lt;code&amp;gt;hw_collect.py&amp;lt;/code&amp;gt;. For the above example, the instructor would run: &amp;lt;code&amp;gt;hw_collect.py cs151 h7&amp;lt;/code&amp;gt;. This will go into each student in the course&#039;s &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directory and copy their h7 directory into &amp;lt;code&amp;gt;/home/cs151/private/submissions/h7/&amp;lt;/code&amp;gt;. There will be a new directory in that submissions directory for the date and time the submissions were collected. For example, if the user jdoe12345@isuad.indstate.edu is in the cs151 course, then the contents of &amp;lt;code&amp;gt;/home/jdoe12345@isuad.indstate.edu/h7/&amp;lt;/code&amp;gt; will be copied into the submission directory (inside of &amp;lt;code&amp;gt;/home/cs151/private/submissions/h7/&amp;lt;/code&amp;gt;). The directory &amp;lt;code&amp;gt;/home/cs151/private/submissions/h7/&amp;lt;/code&amp;gt; will have a symbolic link &amp;lt;code&amp;gt;latest&amp;lt;/code&amp;gt; that is a pointer to the latest submission.&lt;br /&gt;
&lt;br /&gt;
There is a system in place that can be used for auto-checking the output of student programs. The instructor creates a file &amp;lt;code&amp;gt;.tests.json&amp;lt;/code&amp;gt; inside of the assignment directory that has the test cases. The instructor will also need to create a correct working version of each program that can be run to get the &amp;quot;correct&amp;quot; results. The students will use the &amp;lt;code&amp;gt;hw_check.py&amp;lt;/code&amp;gt; command to check their output. The instructor can also use the same command to check student submissions. You can get more details about how this works by logging into the system and running: &amp;lt;code&amp;gt;hw_check.py --help&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=Websites / Webservers=&lt;br /&gt;
==Apache==&lt;br /&gt;
The main cs.indstate.edu website uses the Apache web server. This is configured so that any user can put html and php files in the right directory in their account to be on the web server. Jeff Kinne, who has portal id &amp;lt;code&amp;gt;jkinne&amp;lt;/code&amp;gt; and therefore account on the server with home directory &amp;lt;code&amp;gt;jkinne@isuad.indstate.edu&amp;lt;/code&amp;gt;, would do the following to create the right directories.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~jkinne@isuad.indstate.edu   # jkinne&#039;s home directory&lt;br /&gt;
mkdir public_html               # directory apache looks in for website files&lt;br /&gt;
setfacl -m group:www-data:x .   # give apache execute access to home directory&lt;br /&gt;
setfacl -R -m group:www-data:rX public_html          # give apache rX access to public_html&lt;br /&gt;
setfacl -R -m default:group:www-data:rX public_html  # and new files will also have access&lt;br /&gt;
cd public_html                  # go into that directory&lt;br /&gt;
echo &amp;quot;Hello world&amp;quot; &amp;gt; index.html # write a hello world file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then the file index.html will be accessible on the web at https://cs.indstate.edu/~jkinne@isuad.indstate.edu. Since the web server is Apache, you can look for help on the Apache web server about configuration options (in particular .htaccess files that you can put in your public_html directory to change some settings). By default, the Apache web server understands html and php files. There may be other types of files you would want it to be able to understand; if so you can write to root@cs.indstate.edu.&lt;br /&gt;
&lt;br /&gt;
==Node, Django, etc.==&lt;br /&gt;
Node, Django, and many other web server frameworks can also be run off of the CS server. These generally will pick a port that they will run off of, and you run the main file for your server. Note that the Apache web server uses the &amp;quot;standard&amp;quot; ports (80 for http and 443 for https), so you cannot use those. If you want to run a Node, Django, or similar web server off of the CS server, you need to pick a port that isn&#039;t used for anything else. You should never pick a port number that is below 1024 and really should avoid port numbers below 10000. If you want to make sure to pick a port that will not interfere with anything, write to root@cs.indstate.edu. If you were to run your node web server with port 60000, then you would browse to it on the web at https://cs.indstate.edu:60000. Note that there is indeed normally a node server running on that particular port.&lt;br /&gt;
&lt;br /&gt;
=Spring 2026=&lt;br /&gt;
The following is the list of courses that are supported on the server for the fall 2025, along with the instructor accounts (aka admin accounts) for each course.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
course,admin_accounts&lt;br /&gt;
cs151,&amp;quot;jkinne,jeff,jkinne@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs170,&amp;quot;hrafieipour@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs201,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs203,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs211,&amp;quot;mjenkins1@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs351,&amp;quot;rabhyankar@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs331,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs401,cs501&amp;quot;,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs401L,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs456,cs556&amp;quot;,&amp;quot;jcompton5,jcompton5@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs456L,&amp;quot;jcompton5,jcompton5@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs457,cs557&amp;quot;,&amp;quot;kwexoo,kexoo@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs457L,&amp;quot;kwexoo,kexoo@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs458,cs558&amp;quot;,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs458L,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs469,cs569&amp;quot;,&amp;quot;katterson1,katterson1@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs475,cs575&amp;quot;,&amp;quot;rabhyankar@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs500,&amp;quot;jkinne,jeff,jkinne@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs600,&amp;quot;arash,arafiey@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs601,cs417&amp;quot;,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs609,&amp;quot;katterson1,katterson1@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs611,&amp;quot;rabhyankar@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs618,&amp;quot;shosseini@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs685,&amp;quot;arash,arafiey@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs695,&amp;quot;arash,arafiey@isuad.indstate.edu&amp;quot;&lt;br /&gt;
ect438,&amp;quot;jkinne,jeff,jkinne@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If any course instructors would like any additions, subtractions, or changes to these, let the sys-admin know.&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=CS_accounts&amp;diff=829</id>
		<title>CS accounts</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=CS_accounts&amp;diff=829"/>
		<updated>2026-06-03T01:58:20Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: /* Assignments */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page gives information about logging into and using the CS server (cs.indstate.edu). For help about getting started with using the terminal once you can login, see [[Linux and CS Systems - Getting Started]].&lt;br /&gt;
&lt;br /&gt;
=Logging In=&lt;br /&gt;
The CS server is a Linux server. The primary ways you will login to the server is either (a) with a terminal (aka shell) that allows you to type text commands, or (b) with an sftp program to transfer files between your computer and the server. In either case, you need a username (aka login) and password. There are two types of accounts on the system - ISU portal accounts, and local accounts.&lt;br /&gt;
&lt;br /&gt;
==ISU Portal Accounts==&lt;br /&gt;
Any student/faculty/staff who is involved in CS courses or programs (enrolled in a course, teaching a course, etc.) can login to cs.indstate.edu using their full ISU email address and portal password. The first time you login to the system, an account is created on the system that you can use. It will set your home directory on the system to &amp;lt;code&amp;gt;/home/SID@isuad.indstate.edu/&amp;lt;/code&amp;gt; where &amp;lt;code&amp;gt;SID&amp;lt;/code&amp;gt; is your portal id (aka sycamore id - for students it is the part before the @sycamores in your email address). After logging in, you can run the &amp;lt;code&amp;gt;pwd&amp;lt;/code&amp;gt; command to see this.&lt;br /&gt;
&lt;br /&gt;
For those familiar with Linux already... Note that there is not currently &amp;quot;finger information&amp;quot; about ISU portal account users. In fact, trying to run something like &amp;quot;finger jkinne@isuad.indstate.edu&amp;quot; will fail. Note that instructors of current courses can get a class list (aka roster) of accounts for their course; see below.&lt;br /&gt;
&lt;br /&gt;
==Local Accounts==&lt;br /&gt;
Some users will have accounts on the CS server that are not tied to their ISU portal accounts. For example, CS faculty have local accounts, and a number of users of the server prior to 2025 have local accounts. These are accounts with username and password that were created just on the server (the ability to login to the server with ISU portal credentials was added in 2025). Any new instructor teaching a CS course can ask for a local account if you do not have one already - write to root@cs.indstate.edu.&lt;br /&gt;
&lt;br /&gt;
==SSH Key==&lt;br /&gt;
You can setup an SSH key to login to the system. You will first need to login to the system normally. Once you are logged in, you can run the following commands.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/.ssh     # in case it does not exist yet&lt;br /&gt;
chmod 700 ~/.ssh # make sure this directory is not accessible to other users&lt;br /&gt;
ssh-keygen       # create keys for logging in&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
You will then transfer the private key file (the one that does not end in .pub) to your local computer in the location for ssh keys. This varies depending on your operating system. On Linux and Mac OS, it will be in &amp;lt;code&amp;gt;~/.ssh&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= CS Server Policies =&lt;br /&gt;
== Prohibitions ==&lt;br /&gt;
For any accounts that you have on the CS server, you should follow all ISU policies.  In particular the following are prohibited - &lt;br /&gt;
* using your account to store or distribute anything that is against its terms/copyright/etc. (e.g., no movies, textbooks, answers to HW problems)&lt;br /&gt;
* using your account to do anything that is illegal&lt;br /&gt;
* using a password that is too easy to guess (i.e., a password cracker that we run finds your password)&lt;br /&gt;
* overloading the CPU or GPU of the system, or filling up any of the system drives&lt;br /&gt;
* anything that is along these lines that we have not thought to state explicitly&lt;br /&gt;
A violation of any of these will result in your account being locked and no longer being allowed to have an account on the systems.&lt;br /&gt;
&lt;br /&gt;
== Inactivity ==&lt;br /&gt;
Accounts that are not used for a period of 6 months will likely be locked as a security precaution. You can write to root@cs.indstate.edu to ask to have your account unlocked again.&lt;br /&gt;
&lt;br /&gt;
=Student Use and Course Account=&lt;br /&gt;
For courses that are currently being offered, if the course uses the server, a class account is created that the instructor of the course can use if they like. This is explained in this section with two examples: CS 151 Intro to Computer Science, and CS 473/573 Computer Networks.&lt;br /&gt;
&lt;br /&gt;
==Course Account==&lt;br /&gt;
An account on the system is created where files for the class can be kept that are to be shared with the students. For CS 151, the account created has username &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt;. For CS 473/573, a single account, &amp;lt;code&amp;gt;cs473&amp;lt;/code&amp;gt;, is created that is to be used for both courses.&lt;br /&gt;
&lt;br /&gt;
==Student Use==&lt;br /&gt;
For students who are currently enrolled in a CS course that uses the server, the first time you login to the system with your ISU portal account, a directory should be created within your account for the course. For example, students in CS 151 will have a directory &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt;, and students in CS 473/573 will have a directory &amp;lt;code&amp;gt;cs473&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Permissions are set on the system so that instructors of the course have read access to the files within student&#039;s course directories for their courses. The instructor for CS 151 will have read access to the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directories of the students enrolled in CS 151; the instructor for CS 473/573 will have read access to the &amp;lt;code&amp;gt;cs473&amp;lt;/code&amp;gt; directories of the students enrolled in CS 473/573; etc. The instructor of the course might have the students submit their work on the server within these directories. Each instructor can choose how they would like to do this.&lt;br /&gt;
&lt;br /&gt;
The course account for each course also has read access to the directories for that course. For example, the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; account will have read access to the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directories within any student enrolled in CS 151.&lt;br /&gt;
&lt;br /&gt;
==Course Account - Instructor Private Files==&lt;br /&gt;
The course account is created with a &amp;lt;code&amp;gt;~/private&amp;lt;/code&amp;gt; directory that is not accessible to other users (i.e., not accessible to students). The class list (aka roster) of students and their accounts is put into this directory (&amp;lt;code&amp;gt;classlist_brief.csv&amp;lt;/code&amp;gt; with the most important information for each student, and &amp;lt;code&amp;gt;classlist_full.csv&amp;lt;/code&amp;gt; with more information). The instructor could keep other files in this &amp;lt;code&amp;gt;private&amp;lt;/code&amp;gt; directory that is meant to be private (e.g., model solutions or grading information).&lt;br /&gt;
&lt;br /&gt;
Inside the &amp;lt;code&amp;gt;~/private/&amp;lt;/code&amp;gt; directory of the course account, there is also a &amp;lt;code&amp;gt;students&amp;lt;/code&amp;gt; directory that has symbolic links to each of the student&#039;s course directories in the course. For example, if the course is cs151, and if the user jdoe12345@isuad.indstate.edu is a student in the course, then there will be a link &amp;lt;code&amp;gt;/home/cs151/private/students/jdoe12345@isuad.indstate.edu&amp;lt;/code&amp;gt; that is a link to the cs151 directory for this student (&amp;lt;code&amp;gt;/home/jdoe12345@isuad.indstate.edu/cs151/&amp;lt;/code&amp;gt;). The instructor for the course can quickly get into the students&#039; directories for the course (but not their home directory) by going to the private/students/ directory and going from there.&lt;br /&gt;
&lt;br /&gt;
The accounts for the instructors of the course are set so they can sudo as the course account. If the instructor of CS 151 uses the local account &amp;lt;code&amp;gt;jkinne&amp;lt;/code&amp;gt; then this user can run the following command to get a shell running as the CS 151 course account: &amp;lt;code&amp;gt;sudo -u cs151 -i&amp;lt;/code&amp;gt;.&lt;br /&gt;
Note that this only works for local accounts, and does not work for ISU Portal accounts (it might work for the jkinne local account but not for the jkinne@isuad.indstate.edu account).&lt;br /&gt;
&lt;br /&gt;
====Change of Semester and Backups====&lt;br /&gt;
Before the next semester, a backup copy of each course account will be created that will be in the course&#039;s &amp;lt;code&amp;gt;~/private/backup/&amp;lt;/code&amp;gt; directory. A directory will be created for the term, and it will have all of the course account&#039;s files from that term within it.&lt;br /&gt;
&lt;br /&gt;
Once the backup has been created for the previous term, the instructor for the current semester can remove files and directories that are no longer needed for the new term. For example, you can clear out the assignment directories in the course account&#039;s home directory, and also the student submissions that are in &amp;lt;code&amp;gt;~/private/submissions/&amp;lt;/code&amp;gt;. Those files will still be in the backup directory in case you need them later. &lt;br /&gt;
&lt;br /&gt;
When the new semester starts (if the course is running in the new semester), the following in the &amp;lt;code&amp;gt;~/private&amp;lt;/code&amp;gt; directory will be updated to be for the new term: classlist_brief.csv, classlist_full.csv, students directory (symbolic links to new semester&#039;s students).&lt;br /&gt;
&lt;br /&gt;
==Assignments==&lt;br /&gt;
Any directory within the course account can be used as an assignment. For example, suppose the account &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; contains a directory &amp;lt;code&amp;gt;h7&amp;lt;/code&amp;gt;. This directory might have files for the students to use on the assignment; they can view these files by going to the directory &amp;lt;code&amp;gt;/home/cs151/h7/&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
A student can &amp;quot;checkout&amp;quot; or &amp;quot;get&amp;quot; an assignment by running&lt;br /&gt;
&amp;lt;pre&amp;gt;hw_get.py cs151 h7&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will copy the &amp;lt;code&amp;gt;h7&amp;lt;/code&amp;gt; directory that is in the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; account into the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directory of the user that executes the command.&lt;br /&gt;
&lt;br /&gt;
An instructor can collect an assignment by running the script &amp;lt;code&amp;gt;hw_collect.py&amp;lt;/code&amp;gt;. For the above example, the instructor would run: &amp;lt;code&amp;gt;hw_collect.py cs151 h7&amp;lt;/code&amp;gt;. This will go into each student in the course&#039;s &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directory and copy their h7 directory into &amp;lt;code&amp;gt;/home/cs151/private/submissions/h7/&amp;lt;/code&amp;gt;. There will be a new directory in that submissions directory for the date and time the submissions were collected. For example, if the user jdoe12345@isuad.indstate.edu is in the cs151 course, then the contents of &amp;lt;code&amp;gt;/home/jdoe12345@isuad.indstate.edu/h7/&amp;lt;/code&amp;gt; will be copied into the submission directory (inside of &amp;lt;code&amp;gt;/home/cs151/private/submissions/h7/&amp;lt;/code&amp;gt;). The directory &amp;lt;code&amp;gt;/home/cs151/private/submissions/h7/&amp;lt;/code&amp;gt; will have a symbolic link &amp;lt;code&amp;gt;latest&amp;lt;/code&amp;gt; that is a pointer to the latest submission.&lt;br /&gt;
&lt;br /&gt;
There is a system in place that can be used for auto-checking the output of student programs. The instructor creates a file &amp;lt;code&amp;gt;.tests.json&amp;lt;/code&amp;gt; inside of the assignment directory that has the test cases. The instructor will also need to create a correct working version of each program that can be run to get the &amp;quot;correct&amp;quot; results. The students will use the &amp;lt;code&amp;gt;hw_check.py&amp;lt;/code&amp;gt; command to check their output. The instructor can also use the same comment to check student submissions. You can get more details about how this works by logging into the system and running: &amp;lt;code&amp;gt;hw_check.py --help&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=Websites / Webservers=&lt;br /&gt;
==Apache==&lt;br /&gt;
The main cs.indstate.edu website uses the Apache web server. This is configured so that any user can put html and php files in the right directory in their account to be on the web server. Jeff Kinne, who has portal id &amp;lt;code&amp;gt;jkinne&amp;lt;/code&amp;gt; and therefore account on the server with home directory &amp;lt;code&amp;gt;jkinne@isuad.indstate.edu&amp;lt;/code&amp;gt;, would do the following to create the right directories.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~jkinne@isuad.indstate.edu   # jkinne&#039;s home directory&lt;br /&gt;
mkdir public_html               # directory apache looks in for website files&lt;br /&gt;
setfacl -m group:www-data:x .   # give apache execute access to home directory&lt;br /&gt;
setfacl -R -m group:www-data:rX public_html          # give apache rX access to public_html&lt;br /&gt;
setfacl -R -m default:group:www-data:rX public_html  # and new files will also have access&lt;br /&gt;
cd public_html                  # go into that directory&lt;br /&gt;
echo &amp;quot;Hello world&amp;quot; &amp;gt; index.html # write a hello world file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then the file index.html will be accessible on the web at https://cs.indstate.edu/~jkinne@isuad.indstate.edu. Since the web server is Apache, you can look for help on the Apache web server about configuration options (in particular .htaccess files that you can put in your public_html directory to change some settings). By default, the Apache web server understands html and php files. There may be other types of files you would want it to be able to understand; if so you can write to root@cs.indstate.edu.&lt;br /&gt;
&lt;br /&gt;
==Node, Django, etc.==&lt;br /&gt;
Node, Django, and many other web server frameworks can also be run off of the CS server. These generally will pick a port that they will run off of, and you run the main file for your server. Note that the Apache web server uses the &amp;quot;standard&amp;quot; ports (80 for http and 443 for https), so you cannot use those. If you want to run a Node, Django, or similar web server off of the CS server, you need to pick a port that isn&#039;t used for anything else. You should never pick a port number that is below 1024 and really should avoid port numbers below 10000. If you want to make sure to pick a port that will not interfere with anything, write to root@cs.indstate.edu. If you were to run your node web server with port 60000, then you would browse to it on the web at https://cs.indstate.edu:60000. Note that there is indeed normally a node server running on that particular port.&lt;br /&gt;
&lt;br /&gt;
=Spring 2026=&lt;br /&gt;
The following is the list of courses that are supported on the server for the fall 2025, along with the instructor accounts (aka admin accounts) for each course.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
course,admin_accounts&lt;br /&gt;
cs151,&amp;quot;jkinne,jeff,jkinne@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs170,&amp;quot;hrafieipour@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs201,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs203,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs211,&amp;quot;mjenkins1@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs351,&amp;quot;rabhyankar@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs331,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs401,cs501&amp;quot;,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs401L,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs456,cs556&amp;quot;,&amp;quot;jcompton5,jcompton5@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs456L,&amp;quot;jcompton5,jcompton5@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs457,cs557&amp;quot;,&amp;quot;kwexoo,kexoo@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs457L,&amp;quot;kwexoo,kexoo@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs458,cs558&amp;quot;,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs458L,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs469,cs569&amp;quot;,&amp;quot;katterson1,katterson1@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs475,cs575&amp;quot;,&amp;quot;rabhyankar@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs500,&amp;quot;jkinne,jeff,jkinne@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs600,&amp;quot;arash,arafiey@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs601,cs417&amp;quot;,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs609,&amp;quot;katterson1,katterson1@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs611,&amp;quot;rabhyankar@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs618,&amp;quot;shosseini@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs685,&amp;quot;arash,arafiey@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs695,&amp;quot;arash,arafiey@isuad.indstate.edu&amp;quot;&lt;br /&gt;
ect438,&amp;quot;jkinne,jeff,jkinne@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If any course instructors would like any additions, subtractions, or changes to these, let the sys-admin know.&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=CS_accounts&amp;diff=828</id>
		<title>CS accounts</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=CS_accounts&amp;diff=828"/>
		<updated>2026-06-03T01:57:53Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: /* Websites / Webservers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page gives information about logging into and using the CS server (cs.indstate.edu). For help about getting started with using the terminal once you can login, see [[Linux and CS Systems - Getting Started]].&lt;br /&gt;
&lt;br /&gt;
=Logging In=&lt;br /&gt;
The CS server is a Linux server. The primary ways you will login to the server is either (a) with a terminal (aka shell) that allows you to type text commands, or (b) with an sftp program to transfer files between your computer and the server. In either case, you need a username (aka login) and password. There are two types of accounts on the system - ISU portal accounts, and local accounts.&lt;br /&gt;
&lt;br /&gt;
==ISU Portal Accounts==&lt;br /&gt;
Any student/faculty/staff who is involved in CS courses or programs (enrolled in a course, teaching a course, etc.) can login to cs.indstate.edu using their full ISU email address and portal password. The first time you login to the system, an account is created on the system that you can use. It will set your home directory on the system to &amp;lt;code&amp;gt;/home/SID@isuad.indstate.edu/&amp;lt;/code&amp;gt; where &amp;lt;code&amp;gt;SID&amp;lt;/code&amp;gt; is your portal id (aka sycamore id - for students it is the part before the @sycamores in your email address). After logging in, you can run the &amp;lt;code&amp;gt;pwd&amp;lt;/code&amp;gt; command to see this.&lt;br /&gt;
&lt;br /&gt;
For those familiar with Linux already... Note that there is not currently &amp;quot;finger information&amp;quot; about ISU portal account users. In fact, trying to run something like &amp;quot;finger jkinne@isuad.indstate.edu&amp;quot; will fail. Note that instructors of current courses can get a class list (aka roster) of accounts for their course; see below.&lt;br /&gt;
&lt;br /&gt;
==Local Accounts==&lt;br /&gt;
Some users will have accounts on the CS server that are not tied to their ISU portal accounts. For example, CS faculty have local accounts, and a number of users of the server prior to 2025 have local accounts. These are accounts with username and password that were created just on the server (the ability to login to the server with ISU portal credentials was added in 2025). Any new instructor teaching a CS course can ask for a local account if you do not have one already - write to root@cs.indstate.edu.&lt;br /&gt;
&lt;br /&gt;
==SSH Key==&lt;br /&gt;
You can setup an SSH key to login to the system. You will first need to login to the system normally. Once you are logged in, you can run the following commands.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/.ssh     # in case it does not exist yet&lt;br /&gt;
chmod 700 ~/.ssh # make sure this directory is not accessible to other users&lt;br /&gt;
ssh-keygen       # create keys for logging in&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
You will then transfer the private key file (the one that does not end in .pub) to your local computer in the location for ssh keys. This varies depending on your operating system. On Linux and Mac OS, it will be in &amp;lt;code&amp;gt;~/.ssh&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= CS Server Policies =&lt;br /&gt;
== Prohibitions ==&lt;br /&gt;
For any accounts that you have on the CS server, you should follow all ISU policies.  In particular the following are prohibited - &lt;br /&gt;
* using your account to store or distribute anything that is against its terms/copyright/etc. (e.g., no movies, textbooks, answers to HW problems)&lt;br /&gt;
* using your account to do anything that is illegal&lt;br /&gt;
* using a password that is too easy to guess (i.e., a password cracker that we run finds your password)&lt;br /&gt;
* overloading the CPU or GPU of the system, or filling up any of the system drives&lt;br /&gt;
* anything that is along these lines that we have not thought to state explicitly&lt;br /&gt;
A violation of any of these will result in your account being locked and no longer being allowed to have an account on the systems.&lt;br /&gt;
&lt;br /&gt;
== Inactivity ==&lt;br /&gt;
Accounts that are not used for a period of 6 months will likely be locked as a security precaution. You can write to root@cs.indstate.edu to ask to have your account unlocked again.&lt;br /&gt;
&lt;br /&gt;
=Student Use and Course Account=&lt;br /&gt;
For courses that are currently being offered, if the course uses the server, a class account is created that the instructor of the course can use if they like. This is explained in this section with two examples: CS 151 Intro to Computer Science, and CS 473/573 Computer Networks.&lt;br /&gt;
&lt;br /&gt;
==Course Account==&lt;br /&gt;
An account on the system is created where files for the class can be kept that are to be shared with the students. For CS 151, the account created has username &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt;. For CS 473/573, a single account, &amp;lt;code&amp;gt;cs473&amp;lt;/code&amp;gt;, is created that is to be used for both courses.&lt;br /&gt;
&lt;br /&gt;
==Student Use==&lt;br /&gt;
For students who are currently enrolled in a CS course that uses the server, the first time you login to the system with your ISU portal account, a directory should be created within your account for the course. For example, students in CS 151 will have a directory &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt;, and students in CS 473/573 will have a directory &amp;lt;code&amp;gt;cs473&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Permissions are set on the system so that instructors of the course have read access to the files within student&#039;s course directories for their courses. The instructor for CS 151 will have read access to the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directories of the students enrolled in CS 151; the instructor for CS 473/573 will have read access to the &amp;lt;code&amp;gt;cs473&amp;lt;/code&amp;gt; directories of the students enrolled in CS 473/573; etc. The instructor of the course might have the students submit their work on the server within these directories. Each instructor can choose how they would like to do this.&lt;br /&gt;
&lt;br /&gt;
The course account for each course also has read access to the directories for that course. For example, the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; account will have read access to the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directories within any student enrolled in CS 151.&lt;br /&gt;
&lt;br /&gt;
==Course Account - Instructor Private Files==&lt;br /&gt;
The course account is created with a &amp;lt;code&amp;gt;~/private&amp;lt;/code&amp;gt; directory that is not accessible to other users (i.e., not accessible to students). The class list (aka roster) of students and their accounts is put into this directory (&amp;lt;code&amp;gt;classlist_brief.csv&amp;lt;/code&amp;gt; with the most important information for each student, and &amp;lt;code&amp;gt;classlist_full.csv&amp;lt;/code&amp;gt; with more information). The instructor could keep other files in this &amp;lt;code&amp;gt;private&amp;lt;/code&amp;gt; directory that is meant to be private (e.g., model solutions or grading information).&lt;br /&gt;
&lt;br /&gt;
Inside the &amp;lt;code&amp;gt;~/private/&amp;lt;/code&amp;gt; directory of the course account, there is also a &amp;lt;code&amp;gt;students&amp;lt;/code&amp;gt; directory that has symbolic links to each of the student&#039;s course directories in the course. For example, if the course is cs151, and if the user jdoe12345@isuad.indstate.edu is a student in the course, then there will be a link &amp;lt;code&amp;gt;/home/cs151/private/students/jdoe12345@isuad.indstate.edu&amp;lt;/code&amp;gt; that is a link to the cs151 directory for this student (&amp;lt;code&amp;gt;/home/jdoe12345@isuad.indstate.edu/cs151/&amp;lt;/code&amp;gt;). The instructor for the course can quickly get into the students&#039; directories for the course (but not their home directory) by going to the private/students/ directory and going from there.&lt;br /&gt;
&lt;br /&gt;
The accounts for the instructors of the course are set so they can sudo as the course account. If the instructor of CS 151 uses the local account &amp;lt;code&amp;gt;jkinne&amp;lt;/code&amp;gt; then this user can run the following command to get a shell running as the CS 151 course account: &amp;lt;code&amp;gt;sudo -u cs151 -i&amp;lt;/code&amp;gt;.&lt;br /&gt;
Note that this only works for local accounts, and does not work for ISU Portal accounts (it might work for the jkinne local account but not for the jkinne@isuad.indstate.edu account).&lt;br /&gt;
&lt;br /&gt;
====Change of Semester and Backups====&lt;br /&gt;
Before the next semester, a backup copy of each course account will be created that will be in the course&#039;s &amp;lt;code&amp;gt;~/private/backup/&amp;lt;/code&amp;gt; directory. A directory will be created for the term, and it will have all of the course account&#039;s files from that term within it.&lt;br /&gt;
&lt;br /&gt;
Once the backup has been created for the previous term, the instructor for the current semester can remove files and directories that are no longer needed for the new term. For example, you can clear out the assignment directories in the course account&#039;s home directory, and also the student submissions that are in &amp;lt;code&amp;gt;~/private/submissions/&amp;lt;/code&amp;gt;. Those files will still be in the backup directory in case you need them later. &lt;br /&gt;
&lt;br /&gt;
When the new semester starts (if the course is running in the new semester), the following in the &amp;lt;code&amp;gt;~/private&amp;lt;/code&amp;gt; directory will be updated to be for the new term: classlist_brief.csv, classlist_full.csv, students directory (symbolic links to new semester&#039;s students).&lt;br /&gt;
&lt;br /&gt;
=Assignments=&lt;br /&gt;
Any directory within the course account can be used as an assignment. For example, suppose the account &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; contains a directory &amp;lt;code&amp;gt;h7&amp;lt;/code&amp;gt;. This directory might have files for the students to use on the assignment; they can view these files by going to the directory &amp;lt;code&amp;gt;/home/cs151/h7/&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
A student can &amp;quot;checkout&amp;quot; or &amp;quot;get&amp;quot; an assignment by running&lt;br /&gt;
&amp;lt;pre&amp;gt;hw_get.py cs151 h7&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will copy the &amp;lt;code&amp;gt;h7&amp;lt;/code&amp;gt; directory that is in the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; account into the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directory of the user that executes the command.&lt;br /&gt;
&lt;br /&gt;
An instructor can collect an assignment by running the script &amp;lt;code&amp;gt;hw_collect.py&amp;lt;/code&amp;gt;. For the above example, the instructor would run: &amp;lt;code&amp;gt;hw_collect.py cs151 h7&amp;lt;/code&amp;gt;. This will go into each student in the course&#039;s &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directory and copy their h7 directory into &amp;lt;code&amp;gt;/home/cs151/private/submissions/h7/&amp;lt;/code&amp;gt;. There will be a new directory in that submissions directory for the date and time the submissions were collected. For example, if the user jdoe12345@isuad.indstate.edu is in the cs151 course, then the contents of &amp;lt;code&amp;gt;/home/jdoe12345@isuad.indstate.edu/h7/&amp;lt;/code&amp;gt; will be copied into the submission directory (inside of &amp;lt;code&amp;gt;/home/cs151/private/submissions/h7/&amp;lt;/code&amp;gt;). The directory &amp;lt;code&amp;gt;/home/cs151/private/submissions/h7/&amp;lt;/code&amp;gt; will have a symbolic link &amp;lt;code&amp;gt;latest&amp;lt;/code&amp;gt; that is a pointer to the latest submission.&lt;br /&gt;
&lt;br /&gt;
There is a system in place that can be used for auto-checking the output of student programs. The instructor creates a file &amp;lt;code&amp;gt;.tests.json&amp;lt;/code&amp;gt; inside of the assignment directory that has the test cases. The instructor will also need to create a correct working version of each program that can be run to get the &amp;quot;correct&amp;quot; results. The students will use the &amp;lt;code&amp;gt;hw_check.py&amp;lt;/code&amp;gt; command to check their output. The instructor can also use the same comment to check student submissions. You can get more details about how this works by logging into the system and running: &amp;lt;code&amp;gt;hw_check.py --help&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=Websites / Webservers=&lt;br /&gt;
==Apache==&lt;br /&gt;
The main cs.indstate.edu website uses the Apache web server. This is configured so that any user can put html and php files in the right directory in their account to be on the web server. Jeff Kinne, who has portal id &amp;lt;code&amp;gt;jkinne&amp;lt;/code&amp;gt; and therefore account on the server with home directory &amp;lt;code&amp;gt;jkinne@isuad.indstate.edu&amp;lt;/code&amp;gt;, would do the following to create the right directories.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~jkinne@isuad.indstate.edu   # jkinne&#039;s home directory&lt;br /&gt;
mkdir public_html               # directory apache looks in for website files&lt;br /&gt;
setfacl -m group:www-data:x .   # give apache execute access to home directory&lt;br /&gt;
setfacl -R -m group:www-data:rX public_html          # give apache rX access to public_html&lt;br /&gt;
setfacl -R -m default:group:www-data:rX public_html  # and new files will also have access&lt;br /&gt;
cd public_html                  # go into that directory&lt;br /&gt;
echo &amp;quot;Hello world&amp;quot; &amp;gt; index.html # write a hello world file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then the file index.html will be accessible on the web at https://cs.indstate.edu/~jkinne@isuad.indstate.edu. Since the web server is Apache, you can look for help on the Apache web server about configuration options (in particular .htaccess files that you can put in your public_html directory to change some settings). By default, the Apache web server understands html and php files. There may be other types of files you would want it to be able to understand; if so you can write to root@cs.indstate.edu.&lt;br /&gt;
&lt;br /&gt;
==Node, Django, etc.==&lt;br /&gt;
Node, Django, and many other web server frameworks can also be run off of the CS server. These generally will pick a port that they will run off of, and you run the main file for your server. Note that the Apache web server uses the &amp;quot;standard&amp;quot; ports (80 for http and 443 for https), so you cannot use those. If you want to run a Node, Django, or similar web server off of the CS server, you need to pick a port that isn&#039;t used for anything else. You should never pick a port number that is below 1024 and really should avoid port numbers below 10000. If you want to make sure to pick a port that will not interfere with anything, write to root@cs.indstate.edu. If you were to run your node web server with port 60000, then you would browse to it on the web at https://cs.indstate.edu:60000. Note that there is indeed normally a node server running on that particular port.&lt;br /&gt;
&lt;br /&gt;
=Spring 2026=&lt;br /&gt;
The following is the list of courses that are supported on the server for the fall 2025, along with the instructor accounts (aka admin accounts) for each course.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
course,admin_accounts&lt;br /&gt;
cs151,&amp;quot;jkinne,jeff,jkinne@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs170,&amp;quot;hrafieipour@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs201,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs203,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs211,&amp;quot;mjenkins1@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs351,&amp;quot;rabhyankar@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs331,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs401,cs501&amp;quot;,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs401L,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs456,cs556&amp;quot;,&amp;quot;jcompton5,jcompton5@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs456L,&amp;quot;jcompton5,jcompton5@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs457,cs557&amp;quot;,&amp;quot;kwexoo,kexoo@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs457L,&amp;quot;kwexoo,kexoo@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs458,cs558&amp;quot;,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs458L,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs469,cs569&amp;quot;,&amp;quot;katterson1,katterson1@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs475,cs575&amp;quot;,&amp;quot;rabhyankar@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs500,&amp;quot;jkinne,jeff,jkinne@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs600,&amp;quot;arash,arafiey@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs601,cs417&amp;quot;,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs609,&amp;quot;katterson1,katterson1@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs611,&amp;quot;rabhyankar@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs618,&amp;quot;shosseini@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs685,&amp;quot;arash,arafiey@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs695,&amp;quot;arash,arafiey@isuad.indstate.edu&amp;quot;&lt;br /&gt;
ect438,&amp;quot;jkinne,jeff,jkinne@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If any course instructors would like any additions, subtractions, or changes to these, let the sys-admin know.&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=CS_accounts&amp;diff=827</id>
		<title>CS accounts</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=CS_accounts&amp;diff=827"/>
		<updated>2026-06-03T01:57:30Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: /* Assignments */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page gives information about logging into and using the CS server (cs.indstate.edu). For help about getting started with using the terminal once you can login, see [[Linux and CS Systems - Getting Started]].&lt;br /&gt;
&lt;br /&gt;
=Logging In=&lt;br /&gt;
The CS server is a Linux server. The primary ways you will login to the server is either (a) with a terminal (aka shell) that allows you to type text commands, or (b) with an sftp program to transfer files between your computer and the server. In either case, you need a username (aka login) and password. There are two types of accounts on the system - ISU portal accounts, and local accounts.&lt;br /&gt;
&lt;br /&gt;
==ISU Portal Accounts==&lt;br /&gt;
Any student/faculty/staff who is involved in CS courses or programs (enrolled in a course, teaching a course, etc.) can login to cs.indstate.edu using their full ISU email address and portal password. The first time you login to the system, an account is created on the system that you can use. It will set your home directory on the system to &amp;lt;code&amp;gt;/home/SID@isuad.indstate.edu/&amp;lt;/code&amp;gt; where &amp;lt;code&amp;gt;SID&amp;lt;/code&amp;gt; is your portal id (aka sycamore id - for students it is the part before the @sycamores in your email address). After logging in, you can run the &amp;lt;code&amp;gt;pwd&amp;lt;/code&amp;gt; command to see this.&lt;br /&gt;
&lt;br /&gt;
For those familiar with Linux already... Note that there is not currently &amp;quot;finger information&amp;quot; about ISU portal account users. In fact, trying to run something like &amp;quot;finger jkinne@isuad.indstate.edu&amp;quot; will fail. Note that instructors of current courses can get a class list (aka roster) of accounts for their course; see below.&lt;br /&gt;
&lt;br /&gt;
==Local Accounts==&lt;br /&gt;
Some users will have accounts on the CS server that are not tied to their ISU portal accounts. For example, CS faculty have local accounts, and a number of users of the server prior to 2025 have local accounts. These are accounts with username and password that were created just on the server (the ability to login to the server with ISU portal credentials was added in 2025). Any new instructor teaching a CS course can ask for a local account if you do not have one already - write to root@cs.indstate.edu.&lt;br /&gt;
&lt;br /&gt;
==SSH Key==&lt;br /&gt;
You can setup an SSH key to login to the system. You will first need to login to the system normally. Once you are logged in, you can run the following commands.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/.ssh     # in case it does not exist yet&lt;br /&gt;
chmod 700 ~/.ssh # make sure this directory is not accessible to other users&lt;br /&gt;
ssh-keygen       # create keys for logging in&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
You will then transfer the private key file (the one that does not end in .pub) to your local computer in the location for ssh keys. This varies depending on your operating system. On Linux and Mac OS, it will be in &amp;lt;code&amp;gt;~/.ssh&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= CS Server Policies =&lt;br /&gt;
== Prohibitions ==&lt;br /&gt;
For any accounts that you have on the CS server, you should follow all ISU policies.  In particular the following are prohibited - &lt;br /&gt;
* using your account to store or distribute anything that is against its terms/copyright/etc. (e.g., no movies, textbooks, answers to HW problems)&lt;br /&gt;
* using your account to do anything that is illegal&lt;br /&gt;
* using a password that is too easy to guess (i.e., a password cracker that we run finds your password)&lt;br /&gt;
* overloading the CPU or GPU of the system, or filling up any of the system drives&lt;br /&gt;
* anything that is along these lines that we have not thought to state explicitly&lt;br /&gt;
A violation of any of these will result in your account being locked and no longer being allowed to have an account on the systems.&lt;br /&gt;
&lt;br /&gt;
== Inactivity ==&lt;br /&gt;
Accounts that are not used for a period of 6 months will likely be locked as a security precaution. You can write to root@cs.indstate.edu to ask to have your account unlocked again.&lt;br /&gt;
&lt;br /&gt;
=Student Use and Course Account=&lt;br /&gt;
For courses that are currently being offered, if the course uses the server, a class account is created that the instructor of the course can use if they like. This is explained in this section with two examples: CS 151 Intro to Computer Science, and CS 473/573 Computer Networks.&lt;br /&gt;
&lt;br /&gt;
==Course Account==&lt;br /&gt;
An account on the system is created where files for the class can be kept that are to be shared with the students. For CS 151, the account created has username &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt;. For CS 473/573, a single account, &amp;lt;code&amp;gt;cs473&amp;lt;/code&amp;gt;, is created that is to be used for both courses.&lt;br /&gt;
&lt;br /&gt;
==Student Use==&lt;br /&gt;
For students who are currently enrolled in a CS course that uses the server, the first time you login to the system with your ISU portal account, a directory should be created within your account for the course. For example, students in CS 151 will have a directory &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt;, and students in CS 473/573 will have a directory &amp;lt;code&amp;gt;cs473&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Permissions are set on the system so that instructors of the course have read access to the files within student&#039;s course directories for their courses. The instructor for CS 151 will have read access to the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directories of the students enrolled in CS 151; the instructor for CS 473/573 will have read access to the &amp;lt;code&amp;gt;cs473&amp;lt;/code&amp;gt; directories of the students enrolled in CS 473/573; etc. The instructor of the course might have the students submit their work on the server within these directories. Each instructor can choose how they would like to do this.&lt;br /&gt;
&lt;br /&gt;
The course account for each course also has read access to the directories for that course. For example, the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; account will have read access to the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directories within any student enrolled in CS 151.&lt;br /&gt;
&lt;br /&gt;
==Course Account - Instructor Private Files==&lt;br /&gt;
The course account is created with a &amp;lt;code&amp;gt;~/private&amp;lt;/code&amp;gt; directory that is not accessible to other users (i.e., not accessible to students). The class list (aka roster) of students and their accounts is put into this directory (&amp;lt;code&amp;gt;classlist_brief.csv&amp;lt;/code&amp;gt; with the most important information for each student, and &amp;lt;code&amp;gt;classlist_full.csv&amp;lt;/code&amp;gt; with more information). The instructor could keep other files in this &amp;lt;code&amp;gt;private&amp;lt;/code&amp;gt; directory that is meant to be private (e.g., model solutions or grading information).&lt;br /&gt;
&lt;br /&gt;
Inside the &amp;lt;code&amp;gt;~/private/&amp;lt;/code&amp;gt; directory of the course account, there is also a &amp;lt;code&amp;gt;students&amp;lt;/code&amp;gt; directory that has symbolic links to each of the student&#039;s course directories in the course. For example, if the course is cs151, and if the user jdoe12345@isuad.indstate.edu is a student in the course, then there will be a link &amp;lt;code&amp;gt;/home/cs151/private/students/jdoe12345@isuad.indstate.edu&amp;lt;/code&amp;gt; that is a link to the cs151 directory for this student (&amp;lt;code&amp;gt;/home/jdoe12345@isuad.indstate.edu/cs151/&amp;lt;/code&amp;gt;). The instructor for the course can quickly get into the students&#039; directories for the course (but not their home directory) by going to the private/students/ directory and going from there.&lt;br /&gt;
&lt;br /&gt;
The accounts for the instructors of the course are set so they can sudo as the course account. If the instructor of CS 151 uses the local account &amp;lt;code&amp;gt;jkinne&amp;lt;/code&amp;gt; then this user can run the following command to get a shell running as the CS 151 course account: &amp;lt;code&amp;gt;sudo -u cs151 -i&amp;lt;/code&amp;gt;.&lt;br /&gt;
Note that this only works for local accounts, and does not work for ISU Portal accounts (it might work for the jkinne local account but not for the jkinne@isuad.indstate.edu account).&lt;br /&gt;
&lt;br /&gt;
====Change of Semester and Backups====&lt;br /&gt;
Before the next semester, a backup copy of each course account will be created that will be in the course&#039;s &amp;lt;code&amp;gt;~/private/backup/&amp;lt;/code&amp;gt; directory. A directory will be created for the term, and it will have all of the course account&#039;s files from that term within it.&lt;br /&gt;
&lt;br /&gt;
Once the backup has been created for the previous term, the instructor for the current semester can remove files and directories that are no longer needed for the new term. For example, you can clear out the assignment directories in the course account&#039;s home directory, and also the student submissions that are in &amp;lt;code&amp;gt;~/private/submissions/&amp;lt;/code&amp;gt;. Those files will still be in the backup directory in case you need them later. &lt;br /&gt;
&lt;br /&gt;
When the new semester starts (if the course is running in the new semester), the following in the &amp;lt;code&amp;gt;~/private&amp;lt;/code&amp;gt; directory will be updated to be for the new term: classlist_brief.csv, classlist_full.csv, students directory (symbolic links to new semester&#039;s students).&lt;br /&gt;
&lt;br /&gt;
=Websites / Webservers=&lt;br /&gt;
==Apache==&lt;br /&gt;
The main cs.indstate.edu website uses the Apache web server. This is configured so that any user can put html and php files in the right directory in their account to be on the web server. Jeff Kinne, who has portal id &amp;lt;code&amp;gt;jkinne&amp;lt;/code&amp;gt; and therefore account on the server with home directory &amp;lt;code&amp;gt;jkinne@isuad.indstate.edu&amp;lt;/code&amp;gt;, would do the following to create the right directories.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~jkinne@isuad.indstate.edu   # jkinne&#039;s home directory&lt;br /&gt;
mkdir public_html               # directory apache looks in for website files&lt;br /&gt;
setfacl -m group:www-data:x .   # give apache execute access to home directory&lt;br /&gt;
setfacl -R -m group:www-data:rX public_html          # give apache rX access to public_html&lt;br /&gt;
setfacl -R -m default:group:www-data:rX public_html  # and new files will also have access&lt;br /&gt;
cd public_html                  # go into that directory&lt;br /&gt;
echo &amp;quot;Hello world&amp;quot; &amp;gt; index.html # write a hello world file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then the file index.html will be accessible on the web at https://cs.indstate.edu/~jkinne@isuad.indstate.edu. Since the web server is Apache, you can look for help on the Apache web server about configuration options (in particular .htaccess files that you can put in your public_html directory to change some settings). By default, the Apache web server understands html and php files. There may be other types of files you would want it to be able to understand; if so you can write to root@cs.indstate.edu.&lt;br /&gt;
&lt;br /&gt;
==Node, Django, etc.==&lt;br /&gt;
Node, Django, and many other web server frameworks can also be run off of the CS server. These generally will pick a port that they will run off of, and you run the main file for your server. Note that the Apache web server uses the &amp;quot;standard&amp;quot; ports (80 for http and 443 for https), so you cannot use those. If you want to run a Node, Django, or similar web server off of the CS server, you need to pick a port that isn&#039;t used for anything else. You should never pick a port number that is below 1024 and really should avoid port numbers below 10000. If you want to make sure to pick a port that will not interfere with anything, write to root@cs.indstate.edu. If you were to run your node web server with port 60000, then you would browse to it on the web at https://cs.indstate.edu:60000. Note that there is indeed normally a node server running on that particular port.&lt;br /&gt;
&lt;br /&gt;
=Spring 2026=&lt;br /&gt;
The following is the list of courses that are supported on the server for the fall 2025, along with the instructor accounts (aka admin accounts) for each course.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
course,admin_accounts&lt;br /&gt;
cs151,&amp;quot;jkinne,jeff,jkinne@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs170,&amp;quot;hrafieipour@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs201,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs203,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs211,&amp;quot;mjenkins1@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs351,&amp;quot;rabhyankar@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs331,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs401,cs501&amp;quot;,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs401L,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs456,cs556&amp;quot;,&amp;quot;jcompton5,jcompton5@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs456L,&amp;quot;jcompton5,jcompton5@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs457,cs557&amp;quot;,&amp;quot;kwexoo,kexoo@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs457L,&amp;quot;kwexoo,kexoo@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs458,cs558&amp;quot;,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs458L,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs469,cs569&amp;quot;,&amp;quot;katterson1,katterson1@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs475,cs575&amp;quot;,&amp;quot;rabhyankar@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs500,&amp;quot;jkinne,jeff,jkinne@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs600,&amp;quot;arash,arafiey@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs601,cs417&amp;quot;,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs609,&amp;quot;katterson1,katterson1@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs611,&amp;quot;rabhyankar@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs618,&amp;quot;shosseini@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs685,&amp;quot;arash,arafiey@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs695,&amp;quot;arash,arafiey@isuad.indstate.edu&amp;quot;&lt;br /&gt;
ect438,&amp;quot;jkinne,jeff,jkinne@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If any course instructors would like any additions, subtractions, or changes to these, let the sys-admin know.&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=CS_accounts&amp;diff=826</id>
		<title>CS accounts</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=CS_accounts&amp;diff=826"/>
		<updated>2026-06-03T01:56:19Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: /* Course Account - Instructor Private Files */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page gives information about logging into and using the CS server (cs.indstate.edu). For help about getting started with using the terminal once you can login, see [[Linux and CS Systems - Getting Started]].&lt;br /&gt;
&lt;br /&gt;
=Logging In=&lt;br /&gt;
The CS server is a Linux server. The primary ways you will login to the server is either (a) with a terminal (aka shell) that allows you to type text commands, or (b) with an sftp program to transfer files between your computer and the server. In either case, you need a username (aka login) and password. There are two types of accounts on the system - ISU portal accounts, and local accounts.&lt;br /&gt;
&lt;br /&gt;
==ISU Portal Accounts==&lt;br /&gt;
Any student/faculty/staff who is involved in CS courses or programs (enrolled in a course, teaching a course, etc.) can login to cs.indstate.edu using their full ISU email address and portal password. The first time you login to the system, an account is created on the system that you can use. It will set your home directory on the system to &amp;lt;code&amp;gt;/home/SID@isuad.indstate.edu/&amp;lt;/code&amp;gt; where &amp;lt;code&amp;gt;SID&amp;lt;/code&amp;gt; is your portal id (aka sycamore id - for students it is the part before the @sycamores in your email address). After logging in, you can run the &amp;lt;code&amp;gt;pwd&amp;lt;/code&amp;gt; command to see this.&lt;br /&gt;
&lt;br /&gt;
For those familiar with Linux already... Note that there is not currently &amp;quot;finger information&amp;quot; about ISU portal account users. In fact, trying to run something like &amp;quot;finger jkinne@isuad.indstate.edu&amp;quot; will fail. Note that instructors of current courses can get a class list (aka roster) of accounts for their course; see below.&lt;br /&gt;
&lt;br /&gt;
==Local Accounts==&lt;br /&gt;
Some users will have accounts on the CS server that are not tied to their ISU portal accounts. For example, CS faculty have local accounts, and a number of users of the server prior to 2025 have local accounts. These are accounts with username and password that were created just on the server (the ability to login to the server with ISU portal credentials was added in 2025). Any new instructor teaching a CS course can ask for a local account if you do not have one already - write to root@cs.indstate.edu.&lt;br /&gt;
&lt;br /&gt;
==SSH Key==&lt;br /&gt;
You can setup an SSH key to login to the system. You will first need to login to the system normally. Once you are logged in, you can run the following commands.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/.ssh     # in case it does not exist yet&lt;br /&gt;
chmod 700 ~/.ssh # make sure this directory is not accessible to other users&lt;br /&gt;
ssh-keygen       # create keys for logging in&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
You will then transfer the private key file (the one that does not end in .pub) to your local computer in the location for ssh keys. This varies depending on your operating system. On Linux and Mac OS, it will be in &amp;lt;code&amp;gt;~/.ssh&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= CS Server Policies =&lt;br /&gt;
== Prohibitions ==&lt;br /&gt;
For any accounts that you have on the CS server, you should follow all ISU policies.  In particular the following are prohibited - &lt;br /&gt;
* using your account to store or distribute anything that is against its terms/copyright/etc. (e.g., no movies, textbooks, answers to HW problems)&lt;br /&gt;
* using your account to do anything that is illegal&lt;br /&gt;
* using a password that is too easy to guess (i.e., a password cracker that we run finds your password)&lt;br /&gt;
* overloading the CPU or GPU of the system, or filling up any of the system drives&lt;br /&gt;
* anything that is along these lines that we have not thought to state explicitly&lt;br /&gt;
A violation of any of these will result in your account being locked and no longer being allowed to have an account on the systems.&lt;br /&gt;
&lt;br /&gt;
== Inactivity ==&lt;br /&gt;
Accounts that are not used for a period of 6 months will likely be locked as a security precaution. You can write to root@cs.indstate.edu to ask to have your account unlocked again.&lt;br /&gt;
&lt;br /&gt;
=Student Use and Course Account=&lt;br /&gt;
For courses that are currently being offered, if the course uses the server, a class account is created that the instructor of the course can use if they like. This is explained in this section with two examples: CS 151 Intro to Computer Science, and CS 473/573 Computer Networks.&lt;br /&gt;
&lt;br /&gt;
==Course Account==&lt;br /&gt;
An account on the system is created where files for the class can be kept that are to be shared with the students. For CS 151, the account created has username &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt;. For CS 473/573, a single account, &amp;lt;code&amp;gt;cs473&amp;lt;/code&amp;gt;, is created that is to be used for both courses.&lt;br /&gt;
&lt;br /&gt;
==Student Use==&lt;br /&gt;
For students who are currently enrolled in a CS course that uses the server, the first time you login to the system with your ISU portal account, a directory should be created within your account for the course. For example, students in CS 151 will have a directory &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt;, and students in CS 473/573 will have a directory &amp;lt;code&amp;gt;cs473&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Permissions are set on the system so that instructors of the course have read access to the files within student&#039;s course directories for their courses. The instructor for CS 151 will have read access to the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directories of the students enrolled in CS 151; the instructor for CS 473/573 will have read access to the &amp;lt;code&amp;gt;cs473&amp;lt;/code&amp;gt; directories of the students enrolled in CS 473/573; etc. The instructor of the course might have the students submit their work on the server within these directories. Each instructor can choose how they would like to do this.&lt;br /&gt;
&lt;br /&gt;
The course account for each course also has read access to the directories for that course. For example, the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; account will have read access to the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directories within any student enrolled in CS 151.&lt;br /&gt;
&lt;br /&gt;
==Course Account - Instructor Private Files==&lt;br /&gt;
The course account is created with a &amp;lt;code&amp;gt;~/private&amp;lt;/code&amp;gt; directory that is not accessible to other users (i.e., not accessible to students). The class list (aka roster) of students and their accounts is put into this directory (&amp;lt;code&amp;gt;classlist_brief.csv&amp;lt;/code&amp;gt; with the most important information for each student, and &amp;lt;code&amp;gt;classlist_full.csv&amp;lt;/code&amp;gt; with more information). The instructor could keep other files in this &amp;lt;code&amp;gt;private&amp;lt;/code&amp;gt; directory that is meant to be private (e.g., model solutions or grading information).&lt;br /&gt;
&lt;br /&gt;
Inside the &amp;lt;code&amp;gt;~/private/&amp;lt;/code&amp;gt; directory of the course account, there is also a &amp;lt;code&amp;gt;students&amp;lt;/code&amp;gt; directory that has symbolic links to each of the student&#039;s course directories in the course. For example, if the course is cs151, and if the user jdoe12345@isuad.indstate.edu is a student in the course, then there will be a link &amp;lt;code&amp;gt;/home/cs151/private/students/jdoe12345@isuad.indstate.edu&amp;lt;/code&amp;gt; that is a link to the cs151 directory for this student (&amp;lt;code&amp;gt;/home/jdoe12345@isuad.indstate.edu/cs151/&amp;lt;/code&amp;gt;). The instructor for the course can quickly get into the students&#039; directories for the course (but not their home directory) by going to the private/students/ directory and going from there.&lt;br /&gt;
&lt;br /&gt;
The accounts for the instructors of the course are set so they can sudo as the course account. If the instructor of CS 151 uses the local account &amp;lt;code&amp;gt;jkinne&amp;lt;/code&amp;gt; then this user can run the following command to get a shell running as the CS 151 course account: &amp;lt;code&amp;gt;sudo -u cs151 -i&amp;lt;/code&amp;gt;.&lt;br /&gt;
Note that this only works for local accounts, and does not work for ISU Portal accounts (it might work for the jkinne local account but not for the jkinne@isuad.indstate.edu account).&lt;br /&gt;
&lt;br /&gt;
====Change of Semester and Backups====&lt;br /&gt;
Before the next semester, a backup copy of each course account will be created that will be in the course&#039;s &amp;lt;code&amp;gt;~/private/backup/&amp;lt;/code&amp;gt; directory. A directory will be created for the term, and it will have all of the course account&#039;s files from that term within it.&lt;br /&gt;
&lt;br /&gt;
Once the backup has been created for the previous term, the instructor for the current semester can remove files and directories that are no longer needed for the new term. For example, you can clear out the assignment directories in the course account&#039;s home directory, and also the student submissions that are in &amp;lt;code&amp;gt;~/private/submissions/&amp;lt;/code&amp;gt;. Those files will still be in the backup directory in case you need them later. &lt;br /&gt;
&lt;br /&gt;
When the new semester starts (if the course is running in the new semester), the following in the &amp;lt;code&amp;gt;~/private&amp;lt;/code&amp;gt; directory will be updated to be for the new term: classlist_brief.csv, classlist_full.csv, students directory (symbolic links to new semester&#039;s students).&lt;br /&gt;
&lt;br /&gt;
=Websites / Webservers=&lt;br /&gt;
==Apache==&lt;br /&gt;
The main cs.indstate.edu website uses the Apache web server. This is configured so that any user can put html and php files in the right directory in their account to be on the web server. Jeff Kinne, who has portal id &amp;lt;code&amp;gt;jkinne&amp;lt;/code&amp;gt; and therefore account on the server with home directory &amp;lt;code&amp;gt;jkinne@isuad.indstate.edu&amp;lt;/code&amp;gt;, would do the following to create the right directories.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~jkinne@isuad.indstate.edu   # jkinne&#039;s home directory&lt;br /&gt;
mkdir public_html               # directory apache looks in for website files&lt;br /&gt;
setfacl -m group:www-data:x .   # give apache execute access to home directory&lt;br /&gt;
setfacl -R -m group:www-data:rX public_html          # give apache rX access to public_html&lt;br /&gt;
setfacl -R -m default:group:www-data:rX public_html  # and new files will also have access&lt;br /&gt;
cd public_html                  # go into that directory&lt;br /&gt;
echo &amp;quot;Hello world&amp;quot; &amp;gt; index.html # write a hello world file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then the file index.html will be accessible on the web at https://cs.indstate.edu/~jkinne@isuad.indstate.edu. Since the web server is Apache, you can look for help on the Apache web server about configuration options (in particular .htaccess files that you can put in your public_html directory to change some settings). By default, the Apache web server understands html and php files. There may be other types of files you would want it to be able to understand; if so you can write to root@cs.indstate.edu.&lt;br /&gt;
&lt;br /&gt;
==Node, Django, etc.==&lt;br /&gt;
Node, Django, and many other web server frameworks can also be run off of the CS server. These generally will pick a port that they will run off of, and you run the main file for your server. Note that the Apache web server uses the &amp;quot;standard&amp;quot; ports (80 for http and 443 for https), so you cannot use those. If you want to run a Node, Django, or similar web server off of the CS server, you need to pick a port that isn&#039;t used for anything else. You should never pick a port number that is below 1024 and really should avoid port numbers below 10000. If you want to make sure to pick a port that will not interfere with anything, write to root@cs.indstate.edu. If you were to run your node web server with port 60000, then you would browse to it on the web at https://cs.indstate.edu:60000. Note that there is indeed normally a node server running on that particular port.&lt;br /&gt;
&lt;br /&gt;
=Assignments=&lt;br /&gt;
Any directory within the course account can be used as an assignment. For example, suppose the account &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; contains a directory &amp;lt;code&amp;gt;h7&amp;lt;/code&amp;gt;. This directory might have files for the students to use on the assignment; they can view these files by going to the directory &amp;lt;code&amp;gt;/home/cs151/h7/&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
A student can &amp;quot;checkout&amp;quot; or &amp;quot;get&amp;quot; an assignment by running&lt;br /&gt;
&amp;lt;pre&amp;gt;hw_get.py cs151 h7&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will copy the &amp;lt;code&amp;gt;h7&amp;lt;/code&amp;gt; directory that is in the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; account into the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directory of the user that executes the command.&lt;br /&gt;
&lt;br /&gt;
An instructor can collect an assignment by running the script &amp;lt;code&amp;gt;hw_collect.py&amp;lt;/code&amp;gt;. For the above example, the instructor would run: &amp;lt;code&amp;gt;hw_collect.py cs151 h7&amp;lt;/code&amp;gt;. This will go into each student in the course&#039;s &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directory and copy their h7 directory into &amp;lt;code&amp;gt;/home/cs151/private/submissions/h7/&amp;lt;/code&amp;gt;. There will be a new directory in that submissions directory for the date and time the submissions were collected. For example, if the user jdoe12345@isuad.indstate.edu is in the cs151 course, then the contents of &amp;lt;code&amp;gt;/home/jdoe12345@isuad.indstate.edu/h7/&amp;lt;/code&amp;gt; will be copied into the submission directory (inside of &amp;lt;code&amp;gt;/home/cs151/private/submissions/h7/&amp;lt;/code&amp;gt;). The directory &amp;lt;code&amp;gt;/home/cs151/private/submissions/h7/&amp;lt;/code&amp;gt; will have a symbolic link &amp;lt;code&amp;gt;latest&amp;lt;/code&amp;gt; that is a pointer to the latest submission.&lt;br /&gt;
&lt;br /&gt;
There is a system in place that can be used for auto-checking the output of student programs. The instructor creates a file &amp;lt;code&amp;gt;.tests.json&amp;lt;/code&amp;gt; inside of the assignment directory that has the test cases. The instructor will also need to create a correct working version of each program that can be run to get the &amp;quot;correct&amp;quot; results. The students will use the &amp;lt;code&amp;gt;hw_check.py&amp;lt;/code&amp;gt; command to check their output. The instructor can also use the same comment to check student submissions. You can get more details about how this works by logging into the system and running: &amp;lt;code&amp;gt;hw_check.py --help&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=Spring 2026=&lt;br /&gt;
The following is the list of courses that are supported on the server for the fall 2025, along with the instructor accounts (aka admin accounts) for each course.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
course,admin_accounts&lt;br /&gt;
cs151,&amp;quot;jkinne,jeff,jkinne@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs170,&amp;quot;hrafieipour@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs201,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs203,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs211,&amp;quot;mjenkins1@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs351,&amp;quot;rabhyankar@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs331,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs401,cs501&amp;quot;,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs401L,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs456,cs556&amp;quot;,&amp;quot;jcompton5,jcompton5@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs456L,&amp;quot;jcompton5,jcompton5@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs457,cs557&amp;quot;,&amp;quot;kwexoo,kexoo@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs457L,&amp;quot;kwexoo,kexoo@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs458,cs558&amp;quot;,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs458L,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs469,cs569&amp;quot;,&amp;quot;katterson1,katterson1@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs475,cs575&amp;quot;,&amp;quot;rabhyankar@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs500,&amp;quot;jkinne,jeff,jkinne@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs600,&amp;quot;arash,arafiey@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs601,cs417&amp;quot;,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs609,&amp;quot;katterson1,katterson1@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs611,&amp;quot;rabhyankar@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs618,&amp;quot;shosseini@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs685,&amp;quot;arash,arafiey@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs695,&amp;quot;arash,arafiey@isuad.indstate.edu&amp;quot;&lt;br /&gt;
ect438,&amp;quot;jkinne,jeff,jkinne@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If any course instructors would like any additions, subtractions, or changes to these, let the sys-admin know.&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=CS_accounts&amp;diff=825</id>
		<title>CS accounts</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=CS_accounts&amp;diff=825"/>
		<updated>2026-06-03T01:53:02Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: /* Student Use and Course Account */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page gives information about logging into and using the CS server (cs.indstate.edu). For help about getting started with using the terminal once you can login, see [[Linux and CS Systems - Getting Started]].&lt;br /&gt;
&lt;br /&gt;
=Logging In=&lt;br /&gt;
The CS server is a Linux server. The primary ways you will login to the server is either (a) with a terminal (aka shell) that allows you to type text commands, or (b) with an sftp program to transfer files between your computer and the server. In either case, you need a username (aka login) and password. There are two types of accounts on the system - ISU portal accounts, and local accounts.&lt;br /&gt;
&lt;br /&gt;
==ISU Portal Accounts==&lt;br /&gt;
Any student/faculty/staff who is involved in CS courses or programs (enrolled in a course, teaching a course, etc.) can login to cs.indstate.edu using their full ISU email address and portal password. The first time you login to the system, an account is created on the system that you can use. It will set your home directory on the system to &amp;lt;code&amp;gt;/home/SID@isuad.indstate.edu/&amp;lt;/code&amp;gt; where &amp;lt;code&amp;gt;SID&amp;lt;/code&amp;gt; is your portal id (aka sycamore id - for students it is the part before the @sycamores in your email address). After logging in, you can run the &amp;lt;code&amp;gt;pwd&amp;lt;/code&amp;gt; command to see this.&lt;br /&gt;
&lt;br /&gt;
For those familiar with Linux already... Note that there is not currently &amp;quot;finger information&amp;quot; about ISU portal account users. In fact, trying to run something like &amp;quot;finger jkinne@isuad.indstate.edu&amp;quot; will fail. Note that instructors of current courses can get a class list (aka roster) of accounts for their course; see below.&lt;br /&gt;
&lt;br /&gt;
==Local Accounts==&lt;br /&gt;
Some users will have accounts on the CS server that are not tied to their ISU portal accounts. For example, CS faculty have local accounts, and a number of users of the server prior to 2025 have local accounts. These are accounts with username and password that were created just on the server (the ability to login to the server with ISU portal credentials was added in 2025). Any new instructor teaching a CS course can ask for a local account if you do not have one already - write to root@cs.indstate.edu.&lt;br /&gt;
&lt;br /&gt;
==SSH Key==&lt;br /&gt;
You can setup an SSH key to login to the system. You will first need to login to the system normally. Once you are logged in, you can run the following commands.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/.ssh     # in case it does not exist yet&lt;br /&gt;
chmod 700 ~/.ssh # make sure this directory is not accessible to other users&lt;br /&gt;
ssh-keygen       # create keys for logging in&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
You will then transfer the private key file (the one that does not end in .pub) to your local computer in the location for ssh keys. This varies depending on your operating system. On Linux and Mac OS, it will be in &amp;lt;code&amp;gt;~/.ssh&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= CS Server Policies =&lt;br /&gt;
== Prohibitions ==&lt;br /&gt;
For any accounts that you have on the CS server, you should follow all ISU policies.  In particular the following are prohibited - &lt;br /&gt;
* using your account to store or distribute anything that is against its terms/copyright/etc. (e.g., no movies, textbooks, answers to HW problems)&lt;br /&gt;
* using your account to do anything that is illegal&lt;br /&gt;
* using a password that is too easy to guess (i.e., a password cracker that we run finds your password)&lt;br /&gt;
* overloading the CPU or GPU of the system, or filling up any of the system drives&lt;br /&gt;
* anything that is along these lines that we have not thought to state explicitly&lt;br /&gt;
A violation of any of these will result in your account being locked and no longer being allowed to have an account on the systems.&lt;br /&gt;
&lt;br /&gt;
== Inactivity ==&lt;br /&gt;
Accounts that are not used for a period of 6 months will likely be locked as a security precaution. You can write to root@cs.indstate.edu to ask to have your account unlocked again.&lt;br /&gt;
&lt;br /&gt;
=Student Use and Course Account=&lt;br /&gt;
For courses that are currently being offered, if the course uses the server, a class account is created that the instructor of the course can use if they like. This is explained in this section with two examples: CS 151 Intro to Computer Science, and CS 473/573 Computer Networks.&lt;br /&gt;
&lt;br /&gt;
==Course Account==&lt;br /&gt;
An account on the system is created where files for the class can be kept that are to be shared with the students. For CS 151, the account created has username &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt;. For CS 473/573, a single account, &amp;lt;code&amp;gt;cs473&amp;lt;/code&amp;gt;, is created that is to be used for both courses.&lt;br /&gt;
&lt;br /&gt;
==Student Use==&lt;br /&gt;
For students who are currently enrolled in a CS course that uses the server, the first time you login to the system with your ISU portal account, a directory should be created within your account for the course. For example, students in CS 151 will have a directory &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt;, and students in CS 473/573 will have a directory &amp;lt;code&amp;gt;cs473&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Permissions are set on the system so that instructors of the course have read access to the files within student&#039;s course directories for their courses. The instructor for CS 151 will have read access to the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directories of the students enrolled in CS 151; the instructor for CS 473/573 will have read access to the &amp;lt;code&amp;gt;cs473&amp;lt;/code&amp;gt; directories of the students enrolled in CS 473/573; etc. The instructor of the course might have the students submit their work on the server within these directories. Each instructor can choose how they would like to do this.&lt;br /&gt;
&lt;br /&gt;
The course account for each course also has read access to the directories for that course. For example, the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; account will have read access to the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directories within any student enrolled in CS 151.&lt;br /&gt;
&lt;br /&gt;
==Course Account - Instructor Private Files==&lt;br /&gt;
The course account is created with a &amp;lt;code&amp;gt;~/private&amp;lt;/code&amp;gt; directory that is not accessible to other users (i.e., not accessible to students). The class list (aka roster) of students and their accounts is put into this directory (&amp;lt;code&amp;gt;classlist_brief.csv&amp;lt;/code&amp;gt; with the most important information for each student, and &amp;lt;code&amp;gt;classlist_full.csv&amp;lt;/code&amp;gt; with more information). The instructor could keep other files in this &amp;lt;code&amp;gt;private&amp;lt;/code&amp;gt; directory that is meant to be private (e.g., model solutions or grading information).&lt;br /&gt;
&lt;br /&gt;
Inside the &amp;lt;code&amp;gt;~/private/&amp;lt;/code&amp;gt; directory of the course account, there is also a &amp;lt;code&amp;gt;students&amp;lt;/code&amp;gt; directory that has symbolic links to each of the student&#039;s course directories in the course. For example, if the course is cs151, and if the user jdoe12345@isuad.indstate.edu is a student in the course, then there will be a link &amp;lt;code&amp;gt;/home/cs151/private/students/jdoe12345@isuad.indstate.edu&amp;lt;/code&amp;gt; that is a link to the cs151 directory for this student (&amp;lt;code&amp;gt;/home/jdoe12345@isuad.indstate.edu/cs151/&amp;lt;/code&amp;gt;). The instructor for the course can quickly get into the students&#039; directories for the course (but not their home directory) by going to the private/students/ directory and going from there.&lt;br /&gt;
&lt;br /&gt;
The accounts for the instructors of the course are set so they can sudo as the course account. If the instructor of CS 151 uses the local account &amp;lt;code&amp;gt;jkinne&amp;lt;/code&amp;gt; then this user can run the following command to get a shell running as the CS 151 course account: &amp;lt;code&amp;gt;sudo -u cs151 -i&amp;lt;/code&amp;gt;&lt;br /&gt;
Note that this only works for local accounts, and does not work for ISU Portal accounts (it might work for the jkinne local account but not for the jkinne@isuad.indstate.edu account).&lt;br /&gt;
&lt;br /&gt;
====Change of Semester and Backups====&lt;br /&gt;
Before the next semester, a backup copy of each course account will be created that will be in the course&#039;s &amp;lt;code&amp;gt;~/private/backup/&amp;lt;/code&amp;gt; directory. A directory will be created for the term, and it will have all of the course account&#039;s files from that term within it.&lt;br /&gt;
&lt;br /&gt;
Once the backup has been created for the previous term, the instructor for the current semester can remove files and directories that are no longer needed for the new term. For example, you can clear out the assignment directories in the course account&#039;s home directory, and also the student submissions that are in &amp;lt;code&amp;gt;~/private/submissions/&amp;lt;/code&amp;gt;. Those files will still be in the backup directory in case you need them later. &lt;br /&gt;
&lt;br /&gt;
When the new semester starts (if the course is running in the new semester), the following in the &amp;lt;code&amp;gt;~/private&amp;lt;/code&amp;gt; directory will be updated to be for the new term: classlist_brief.csv, classlist_full.csv, students directory (symbolic links to new semester&#039;s students).&lt;br /&gt;
&lt;br /&gt;
=Websites / Webservers=&lt;br /&gt;
==Apache==&lt;br /&gt;
The main cs.indstate.edu website uses the Apache web server. This is configured so that any user can put html and php files in the right directory in their account to be on the web server. Jeff Kinne, who has portal id &amp;lt;code&amp;gt;jkinne&amp;lt;/code&amp;gt; and therefore account on the server with home directory &amp;lt;code&amp;gt;jkinne@isuad.indstate.edu&amp;lt;/code&amp;gt;, would do the following to create the right directories.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~jkinne@isuad.indstate.edu   # jkinne&#039;s home directory&lt;br /&gt;
mkdir public_html               # directory apache looks in for website files&lt;br /&gt;
setfacl -m group:www-data:x .   # give apache execute access to home directory&lt;br /&gt;
setfacl -R -m group:www-data:rX public_html          # give apache rX access to public_html&lt;br /&gt;
setfacl -R -m default:group:www-data:rX public_html  # and new files will also have access&lt;br /&gt;
cd public_html                  # go into that directory&lt;br /&gt;
echo &amp;quot;Hello world&amp;quot; &amp;gt; index.html # write a hello world file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then the file index.html will be accessible on the web at https://cs.indstate.edu/~jkinne@isuad.indstate.edu. Since the web server is Apache, you can look for help on the Apache web server about configuration options (in particular .htaccess files that you can put in your public_html directory to change some settings). By default, the Apache web server understands html and php files. There may be other types of files you would want it to be able to understand; if so you can write to root@cs.indstate.edu.&lt;br /&gt;
&lt;br /&gt;
==Node, Django, etc.==&lt;br /&gt;
Node, Django, and many other web server frameworks can also be run off of the CS server. These generally will pick a port that they will run off of, and you run the main file for your server. Note that the Apache web server uses the &amp;quot;standard&amp;quot; ports (80 for http and 443 for https), so you cannot use those. If you want to run a Node, Django, or similar web server off of the CS server, you need to pick a port that isn&#039;t used for anything else. You should never pick a port number that is below 1024 and really should avoid port numbers below 10000. If you want to make sure to pick a port that will not interfere with anything, write to root@cs.indstate.edu. If you were to run your node web server with port 60000, then you would browse to it on the web at https://cs.indstate.edu:60000. Note that there is indeed normally a node server running on that particular port.&lt;br /&gt;
&lt;br /&gt;
=Assignments=&lt;br /&gt;
Any directory within the course account can be used as an assignment. For example, suppose the account &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; contains a directory &amp;lt;code&amp;gt;h7&amp;lt;/code&amp;gt;. This directory might have files for the students to use on the assignment; they can view these files by going to the directory &amp;lt;code&amp;gt;/home/cs151/h7/&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
A student can &amp;quot;checkout&amp;quot; or &amp;quot;get&amp;quot; an assignment by running&lt;br /&gt;
&amp;lt;pre&amp;gt;hw_get.py cs151 h7&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will copy the &amp;lt;code&amp;gt;h7&amp;lt;/code&amp;gt; directory that is in the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; account into the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directory of the user that executes the command.&lt;br /&gt;
&lt;br /&gt;
An instructor can collect an assignment by running the script &amp;lt;code&amp;gt;hw_collect.py&amp;lt;/code&amp;gt;. For the above example, the instructor would run: &amp;lt;code&amp;gt;hw_collect.py cs151 h7&amp;lt;/code&amp;gt;. This will go into each student in the course&#039;s &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directory and copy their h7 directory into &amp;lt;code&amp;gt;/home/cs151/private/submissions/h7/&amp;lt;/code&amp;gt;. There will be a new directory in that submissions directory for the date and time the submissions were collected. For example, if the user jdoe12345@isuad.indstate.edu is in the cs151 course, then the contents of &amp;lt;code&amp;gt;/home/jdoe12345@isuad.indstate.edu/h7/&amp;lt;/code&amp;gt; will be copied into the submission directory (inside of &amp;lt;code&amp;gt;/home/cs151/private/submissions/h7/&amp;lt;/code&amp;gt;). The directory &amp;lt;code&amp;gt;/home/cs151/private/submissions/h7/&amp;lt;/code&amp;gt; will have a symbolic link &amp;lt;code&amp;gt;latest&amp;lt;/code&amp;gt; that is a pointer to the latest submission.&lt;br /&gt;
&lt;br /&gt;
There is a system in place that can be used for auto-checking the output of student programs. The instructor creates a file &amp;lt;code&amp;gt;.tests.json&amp;lt;/code&amp;gt; inside of the assignment directory that has the test cases. The instructor will also need to create a correct working version of each program that can be run to get the &amp;quot;correct&amp;quot; results. The students will use the &amp;lt;code&amp;gt;hw_check.py&amp;lt;/code&amp;gt; command to check their output. The instructor can also use the same comment to check student submissions. You can get more details about how this works by logging into the system and running: &amp;lt;code&amp;gt;hw_check.py --help&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=Spring 2026=&lt;br /&gt;
The following is the list of courses that are supported on the server for the fall 2025, along with the instructor accounts (aka admin accounts) for each course.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
course,admin_accounts&lt;br /&gt;
cs151,&amp;quot;jkinne,jeff,jkinne@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs170,&amp;quot;hrafieipour@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs201,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs203,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs211,&amp;quot;mjenkins1@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs351,&amp;quot;rabhyankar@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs331,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs401,cs501&amp;quot;,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs401L,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs456,cs556&amp;quot;,&amp;quot;jcompton5,jcompton5@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs456L,&amp;quot;jcompton5,jcompton5@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs457,cs557&amp;quot;,&amp;quot;kwexoo,kexoo@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs457L,&amp;quot;kwexoo,kexoo@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs458,cs558&amp;quot;,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs458L,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs469,cs569&amp;quot;,&amp;quot;katterson1,katterson1@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs475,cs575&amp;quot;,&amp;quot;rabhyankar@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs500,&amp;quot;jkinne,jeff,jkinne@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs600,&amp;quot;arash,arafiey@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs601,cs417&amp;quot;,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs609,&amp;quot;katterson1,katterson1@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs611,&amp;quot;rabhyankar@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs618,&amp;quot;shosseini@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs685,&amp;quot;arash,arafiey@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs695,&amp;quot;arash,arafiey@isuad.indstate.edu&amp;quot;&lt;br /&gt;
ect438,&amp;quot;jkinne,jeff,jkinne@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If any course instructors would like any additions, subtractions, or changes to these, let the sys-admin know.&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=CS_accounts&amp;diff=824</id>
		<title>CS accounts</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=CS_accounts&amp;diff=824"/>
		<updated>2026-06-03T01:52:22Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: /* Inactivity */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page gives information about logging into and using the CS server (cs.indstate.edu). For help about getting started with using the terminal once you can login, see [[Linux and CS Systems - Getting Started]].&lt;br /&gt;
&lt;br /&gt;
=Logging In=&lt;br /&gt;
The CS server is a Linux server. The primary ways you will login to the server is either (a) with a terminal (aka shell) that allows you to type text commands, or (b) with an sftp program to transfer files between your computer and the server. In either case, you need a username (aka login) and password. There are two types of accounts on the system - ISU portal accounts, and local accounts.&lt;br /&gt;
&lt;br /&gt;
==ISU Portal Accounts==&lt;br /&gt;
Any student/faculty/staff who is involved in CS courses or programs (enrolled in a course, teaching a course, etc.) can login to cs.indstate.edu using their full ISU email address and portal password. The first time you login to the system, an account is created on the system that you can use. It will set your home directory on the system to &amp;lt;code&amp;gt;/home/SID@isuad.indstate.edu/&amp;lt;/code&amp;gt; where &amp;lt;code&amp;gt;SID&amp;lt;/code&amp;gt; is your portal id (aka sycamore id - for students it is the part before the @sycamores in your email address). After logging in, you can run the &amp;lt;code&amp;gt;pwd&amp;lt;/code&amp;gt; command to see this.&lt;br /&gt;
&lt;br /&gt;
For those familiar with Linux already... Note that there is not currently &amp;quot;finger information&amp;quot; about ISU portal account users. In fact, trying to run something like &amp;quot;finger jkinne@isuad.indstate.edu&amp;quot; will fail. Note that instructors of current courses can get a class list (aka roster) of accounts for their course; see below.&lt;br /&gt;
&lt;br /&gt;
==Local Accounts==&lt;br /&gt;
Some users will have accounts on the CS server that are not tied to their ISU portal accounts. For example, CS faculty have local accounts, and a number of users of the server prior to 2025 have local accounts. These are accounts with username and password that were created just on the server (the ability to login to the server with ISU portal credentials was added in 2025). Any new instructor teaching a CS course can ask for a local account if you do not have one already - write to root@cs.indstate.edu.&lt;br /&gt;
&lt;br /&gt;
==SSH Key==&lt;br /&gt;
You can setup an SSH key to login to the system. You will first need to login to the system normally. Once you are logged in, you can run the following commands.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/.ssh     # in case it does not exist yet&lt;br /&gt;
chmod 700 ~/.ssh # make sure this directory is not accessible to other users&lt;br /&gt;
ssh-keygen       # create keys for logging in&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
You will then transfer the private key file (the one that does not end in .pub) to your local computer in the location for ssh keys. This varies depending on your operating system. On Linux and Mac OS, it will be in &amp;lt;code&amp;gt;~/.ssh&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= CS Server Policies =&lt;br /&gt;
== Prohibitions ==&lt;br /&gt;
For any accounts that you have on the CS server, you should follow all ISU policies.  In particular the following are prohibited - &lt;br /&gt;
* using your account to store or distribute anything that is against its terms/copyright/etc. (e.g., no movies, textbooks, answers to HW problems)&lt;br /&gt;
* using your account to do anything that is illegal&lt;br /&gt;
* using a password that is too easy to guess (i.e., a password cracker that we run finds your password)&lt;br /&gt;
* overloading the CPU or GPU of the system, or filling up any of the system drives&lt;br /&gt;
* anything that is along these lines that we have not thought to state explicitly&lt;br /&gt;
A violation of any of these will result in your account being locked and no longer being allowed to have an account on the systems.&lt;br /&gt;
&lt;br /&gt;
== Inactivity ==&lt;br /&gt;
Accounts that are not used for a period of 6 months will likely be locked as a security precaution. You can write to root@cs.indstate.edu to ask to have your account unlocked again.&lt;br /&gt;
&lt;br /&gt;
=Student Use and Course Account=&lt;br /&gt;
For courses that are currently being offered, if the course uses the server, a class account is created that the instructor of the course can use if they like. This is explained with two examples: CS 151 Intro to Computer Science, and CS 473/573 Computer Networks.&lt;br /&gt;
&lt;br /&gt;
==Course Account==&lt;br /&gt;
An account on the system is created where files for the class can be kept that are to be shared with the students. For CS 151, the account created has username &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt;. For CS 473/573, a single account, &amp;lt;code&amp;gt;cs473&amp;lt;/code&amp;gt;, is created that is to be used for both courses.&lt;br /&gt;
&lt;br /&gt;
==Student Use==&lt;br /&gt;
For students who are currently enrolled in a CS course that uses the server, the first time you login to the system with your ISU portal account, a directory should be created within your account for the course. For example, students in CS 151 will have a directory &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt;, and students in CS 473/573 will have a directory &amp;lt;code&amp;gt;cs473&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Permissions are set on the system so that instructors of the course have read access to the files within student&#039;s course directories for their courses. The instructor for CS 151 will have read access to the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directories of the students enrolled in CS 151; the instructor for CS 473/573 will have read access to the &amp;lt;code&amp;gt;cs473&amp;lt;/code&amp;gt; directories of the students enrolled in CS 473/573; etc. The instructor of the course might have the students submit their work on the server within these directories. Each instructor can choose how they would like to do this.&lt;br /&gt;
&lt;br /&gt;
The course account for each course also has read access to the directories for that course. For example, the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; account will have read access to the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directories within any student enrolled in CS 151.&lt;br /&gt;
&lt;br /&gt;
==Course Account - Instructor Private Files==&lt;br /&gt;
The course account is created with a &amp;lt;code&amp;gt;~/private&amp;lt;/code&amp;gt; directory that is not accessible to other users (i.e., not accessible to students). The class list (aka roster) of students and their accounts is put into this directory (&amp;lt;code&amp;gt;classlist_brief.csv&amp;lt;/code&amp;gt; with the most important information for each student, and &amp;lt;code&amp;gt;classlist_full.csv&amp;lt;/code&amp;gt; with more information). The instructor could keep other files in this &amp;lt;code&amp;gt;private&amp;lt;/code&amp;gt; directory that is meant to be private (e.g., model solutions or grading information).&lt;br /&gt;
&lt;br /&gt;
Inside the &amp;lt;code&amp;gt;~/private/&amp;lt;/code&amp;gt; directory of the course account, there is also a &amp;lt;code&amp;gt;students&amp;lt;/code&amp;gt; directory that has symbolic links to each of the student&#039;s course directories in the course. For example, if the course is cs151, and if the user jdoe12345@isuad.indstate.edu is a student in the course, then there will be a link &amp;lt;code&amp;gt;/home/cs151/private/students/jdoe12345@isuad.indstate.edu&amp;lt;/code&amp;gt; that is a link to the cs151 directory for this student (&amp;lt;code&amp;gt;/home/jdoe12345@isuad.indstate.edu/cs151/&amp;lt;/code&amp;gt;). The instructor for the course can quickly get into the students&#039; directories for the course (but not their home directory) by going to the private/students/ directory and going from there.&lt;br /&gt;
&lt;br /&gt;
The accounts for the instructors of the course are set so they can sudo as the course account. If the instructor of CS 151 uses the local account &amp;lt;code&amp;gt;jkinne&amp;lt;/code&amp;gt; then this user can run the following command to get a shell running as the CS 151 course account: &amp;lt;code&amp;gt;sudo -u cs151 -i&amp;lt;/code&amp;gt;&lt;br /&gt;
Note that this only works for local accounts, and does not work for ISU Portal accounts (it might work for the jkinne local account but not for the jkinne@isuad.indstate.edu account).&lt;br /&gt;
&lt;br /&gt;
====Change of Semester and Backups====&lt;br /&gt;
Before the next semester, a backup copy of each course account will be created that will be in the course&#039;s &amp;lt;code&amp;gt;~/private/backup/&amp;lt;/code&amp;gt; directory. A directory will be created for the term, and it will have all of the course account&#039;s files from that term within it.&lt;br /&gt;
&lt;br /&gt;
Once the backup has been created for the previous term, the instructor for the current semester can remove files and directories that are no longer needed for the new term. For example, you can clear out the assignment directories in the course account&#039;s home directory, and also the student submissions that are in &amp;lt;code&amp;gt;~/private/submissions/&amp;lt;/code&amp;gt;. Those files will still be in the backup directory in case you need them later. &lt;br /&gt;
&lt;br /&gt;
When the new semester starts (if the course is running in the new semester), the following in the &amp;lt;code&amp;gt;~/private&amp;lt;/code&amp;gt; directory will be updated to be for the new term: classlist_brief.csv, classlist_full.csv, students directory (symbolic links to new semester&#039;s students).&lt;br /&gt;
&lt;br /&gt;
=Websites / Webservers=&lt;br /&gt;
==Apache==&lt;br /&gt;
The main cs.indstate.edu website uses the Apache web server. This is configured so that any user can put html and php files in the right directory in their account to be on the web server. Jeff Kinne, who has portal id &amp;lt;code&amp;gt;jkinne&amp;lt;/code&amp;gt; and therefore account on the server with home directory &amp;lt;code&amp;gt;jkinne@isuad.indstate.edu&amp;lt;/code&amp;gt;, would do the following to create the right directories.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~jkinne@isuad.indstate.edu   # jkinne&#039;s home directory&lt;br /&gt;
mkdir public_html               # directory apache looks in for website files&lt;br /&gt;
setfacl -m group:www-data:x .   # give apache execute access to home directory&lt;br /&gt;
setfacl -R -m group:www-data:rX public_html          # give apache rX access to public_html&lt;br /&gt;
setfacl -R -m default:group:www-data:rX public_html  # and new files will also have access&lt;br /&gt;
cd public_html                  # go into that directory&lt;br /&gt;
echo &amp;quot;Hello world&amp;quot; &amp;gt; index.html # write a hello world file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then the file index.html will be accessible on the web at https://cs.indstate.edu/~jkinne@isuad.indstate.edu. Since the web server is Apache, you can look for help on the Apache web server about configuration options (in particular .htaccess files that you can put in your public_html directory to change some settings). By default, the Apache web server understands html and php files. There may be other types of files you would want it to be able to understand; if so you can write to root@cs.indstate.edu.&lt;br /&gt;
&lt;br /&gt;
==Node, Django, etc.==&lt;br /&gt;
Node, Django, and many other web server frameworks can also be run off of the CS server. These generally will pick a port that they will run off of, and you run the main file for your server. Note that the Apache web server uses the &amp;quot;standard&amp;quot; ports (80 for http and 443 for https), so you cannot use those. If you want to run a Node, Django, or similar web server off of the CS server, you need to pick a port that isn&#039;t used for anything else. You should never pick a port number that is below 1024 and really should avoid port numbers below 10000. If you want to make sure to pick a port that will not interfere with anything, write to root@cs.indstate.edu. If you were to run your node web server with port 60000, then you would browse to it on the web at https://cs.indstate.edu:60000. Note that there is indeed normally a node server running on that particular port.&lt;br /&gt;
&lt;br /&gt;
=Assignments=&lt;br /&gt;
Any directory within the course account can be used as an assignment. For example, suppose the account &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; contains a directory &amp;lt;code&amp;gt;h7&amp;lt;/code&amp;gt;. This directory might have files for the students to use on the assignment; they can view these files by going to the directory &amp;lt;code&amp;gt;/home/cs151/h7/&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
A student can &amp;quot;checkout&amp;quot; or &amp;quot;get&amp;quot; an assignment by running&lt;br /&gt;
&amp;lt;pre&amp;gt;hw_get.py cs151 h7&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will copy the &amp;lt;code&amp;gt;h7&amp;lt;/code&amp;gt; directory that is in the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; account into the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directory of the user that executes the command.&lt;br /&gt;
&lt;br /&gt;
An instructor can collect an assignment by running the script &amp;lt;code&amp;gt;hw_collect.py&amp;lt;/code&amp;gt;. For the above example, the instructor would run: &amp;lt;code&amp;gt;hw_collect.py cs151 h7&amp;lt;/code&amp;gt;. This will go into each student in the course&#039;s &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directory and copy their h7 directory into &amp;lt;code&amp;gt;/home/cs151/private/submissions/h7/&amp;lt;/code&amp;gt;. There will be a new directory in that submissions directory for the date and time the submissions were collected. For example, if the user jdoe12345@isuad.indstate.edu is in the cs151 course, then the contents of &amp;lt;code&amp;gt;/home/jdoe12345@isuad.indstate.edu/h7/&amp;lt;/code&amp;gt; will be copied into the submission directory (inside of &amp;lt;code&amp;gt;/home/cs151/private/submissions/h7/&amp;lt;/code&amp;gt;). The directory &amp;lt;code&amp;gt;/home/cs151/private/submissions/h7/&amp;lt;/code&amp;gt; will have a symbolic link &amp;lt;code&amp;gt;latest&amp;lt;/code&amp;gt; that is a pointer to the latest submission.&lt;br /&gt;
&lt;br /&gt;
There is a system in place that can be used for auto-checking the output of student programs. The instructor creates a file &amp;lt;code&amp;gt;.tests.json&amp;lt;/code&amp;gt; inside of the assignment directory that has the test cases. The instructor will also need to create a correct working version of each program that can be run to get the &amp;quot;correct&amp;quot; results. The students will use the &amp;lt;code&amp;gt;hw_check.py&amp;lt;/code&amp;gt; command to check their output. The instructor can also use the same comment to check student submissions. You can get more details about how this works by logging into the system and running: &amp;lt;code&amp;gt;hw_check.py --help&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=Spring 2026=&lt;br /&gt;
The following is the list of courses that are supported on the server for the fall 2025, along with the instructor accounts (aka admin accounts) for each course.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
course,admin_accounts&lt;br /&gt;
cs151,&amp;quot;jkinne,jeff,jkinne@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs170,&amp;quot;hrafieipour@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs201,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs203,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs211,&amp;quot;mjenkins1@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs351,&amp;quot;rabhyankar@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs331,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs401,cs501&amp;quot;,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs401L,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs456,cs556&amp;quot;,&amp;quot;jcompton5,jcompton5@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs456L,&amp;quot;jcompton5,jcompton5@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs457,cs557&amp;quot;,&amp;quot;kwexoo,kexoo@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs457L,&amp;quot;kwexoo,kexoo@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs458,cs558&amp;quot;,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs458L,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs469,cs569&amp;quot;,&amp;quot;katterson1,katterson1@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs475,cs575&amp;quot;,&amp;quot;rabhyankar@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs500,&amp;quot;jkinne,jeff,jkinne@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs600,&amp;quot;arash,arafiey@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs601,cs417&amp;quot;,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs609,&amp;quot;katterson1,katterson1@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs611,&amp;quot;rabhyankar@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs618,&amp;quot;shosseini@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs685,&amp;quot;arash,arafiey@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs695,&amp;quot;arash,arafiey@isuad.indstate.edu&amp;quot;&lt;br /&gt;
ect438,&amp;quot;jkinne,jeff,jkinne@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If any course instructors would like any additions, subtractions, or changes to these, let the sys-admin know.&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=CS_accounts&amp;diff=823</id>
		<title>CS accounts</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=CS_accounts&amp;diff=823"/>
		<updated>2026-06-03T01:52:02Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: /* SSH Key */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page gives information about logging into and using the CS server (cs.indstate.edu). For help about getting started with using the terminal once you can login, see [[Linux and CS Systems - Getting Started]].&lt;br /&gt;
&lt;br /&gt;
=Logging In=&lt;br /&gt;
The CS server is a Linux server. The primary ways you will login to the server is either (a) with a terminal (aka shell) that allows you to type text commands, or (b) with an sftp program to transfer files between your computer and the server. In either case, you need a username (aka login) and password. There are two types of accounts on the system - ISU portal accounts, and local accounts.&lt;br /&gt;
&lt;br /&gt;
==ISU Portal Accounts==&lt;br /&gt;
Any student/faculty/staff who is involved in CS courses or programs (enrolled in a course, teaching a course, etc.) can login to cs.indstate.edu using their full ISU email address and portal password. The first time you login to the system, an account is created on the system that you can use. It will set your home directory on the system to &amp;lt;code&amp;gt;/home/SID@isuad.indstate.edu/&amp;lt;/code&amp;gt; where &amp;lt;code&amp;gt;SID&amp;lt;/code&amp;gt; is your portal id (aka sycamore id - for students it is the part before the @sycamores in your email address). After logging in, you can run the &amp;lt;code&amp;gt;pwd&amp;lt;/code&amp;gt; command to see this.&lt;br /&gt;
&lt;br /&gt;
For those familiar with Linux already... Note that there is not currently &amp;quot;finger information&amp;quot; about ISU portal account users. In fact, trying to run something like &amp;quot;finger jkinne@isuad.indstate.edu&amp;quot; will fail. Note that instructors of current courses can get a class list (aka roster) of accounts for their course; see below.&lt;br /&gt;
&lt;br /&gt;
==Local Accounts==&lt;br /&gt;
Some users will have accounts on the CS server that are not tied to their ISU portal accounts. For example, CS faculty have local accounts, and a number of users of the server prior to 2025 have local accounts. These are accounts with username and password that were created just on the server (the ability to login to the server with ISU portal credentials was added in 2025). Any new instructor teaching a CS course can ask for a local account if you do not have one already - write to root@cs.indstate.edu.&lt;br /&gt;
&lt;br /&gt;
==SSH Key==&lt;br /&gt;
You can setup an SSH key to login to the system. You will first need to login to the system normally. Once you are logged in, you can run the following commands.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/.ssh     # in case it does not exist yet&lt;br /&gt;
chmod 700 ~/.ssh # make sure this directory is not accessible to other users&lt;br /&gt;
ssh-keygen       # create keys for logging in&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
You will then transfer the private key file (the one that does not end in .pub) to your local computer in the location for ssh keys. This varies depending on your operating system. On Linux and Mac OS, it will be in &amp;lt;code&amp;gt;~/.ssh&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= CS Server Policies =&lt;br /&gt;
== Prohibitions ==&lt;br /&gt;
For any accounts that you have on the CS server, you should follow all ISU policies.  In particular the following are prohibited - &lt;br /&gt;
* using your account to store or distribute anything that is against its terms/copyright/etc. (e.g., no movies, textbooks, answers to HW problems)&lt;br /&gt;
* using your account to do anything that is illegal&lt;br /&gt;
* using a password that is too easy to guess (i.e., a password cracker that we run finds your password)&lt;br /&gt;
* overloading the CPU or GPU of the system, or filling up any of the system drives&lt;br /&gt;
* anything that is along these lines that we have not thought to state explicitly&lt;br /&gt;
A violation of any of these will result in your account being locked and no longer being allowed to have an account on the systems.&lt;br /&gt;
&lt;br /&gt;
== Inactivity ==&lt;br /&gt;
Accounts that are not used for a period of 6 months will likely be locked as a security precaution. You can write to root@cs.indstate.edu to ask to have your account unlocked again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Student Use and Course Account=&lt;br /&gt;
For courses that are currently being offered, if the course uses the server, a class account is created that the instructor of the course can use if they like. This is explained with two examples: CS 151 Intro to Computer Science, and CS 473/573 Computer Networks.&lt;br /&gt;
&lt;br /&gt;
==Course Account==&lt;br /&gt;
An account on the system is created where files for the class can be kept that are to be shared with the students. For CS 151, the account created has username &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt;. For CS 473/573, a single account, &amp;lt;code&amp;gt;cs473&amp;lt;/code&amp;gt;, is created that is to be used for both courses.&lt;br /&gt;
&lt;br /&gt;
==Student Use==&lt;br /&gt;
For students who are currently enrolled in a CS course that uses the server, the first time you login to the system with your ISU portal account, a directory should be created within your account for the course. For example, students in CS 151 will have a directory &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt;, and students in CS 473/573 will have a directory &amp;lt;code&amp;gt;cs473&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Permissions are set on the system so that instructors of the course have read access to the files within student&#039;s course directories for their courses. The instructor for CS 151 will have read access to the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directories of the students enrolled in CS 151; the instructor for CS 473/573 will have read access to the &amp;lt;code&amp;gt;cs473&amp;lt;/code&amp;gt; directories of the students enrolled in CS 473/573; etc. The instructor of the course might have the students submit their work on the server within these directories. Each instructor can choose how they would like to do this.&lt;br /&gt;
&lt;br /&gt;
The course account for each course also has read access to the directories for that course. For example, the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; account will have read access to the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directories within any student enrolled in CS 151.&lt;br /&gt;
&lt;br /&gt;
==Course Account - Instructor Private Files==&lt;br /&gt;
The course account is created with a &amp;lt;code&amp;gt;~/private&amp;lt;/code&amp;gt; directory that is not accessible to other users (i.e., not accessible to students). The class list (aka roster) of students and their accounts is put into this directory (&amp;lt;code&amp;gt;classlist_brief.csv&amp;lt;/code&amp;gt; with the most important information for each student, and &amp;lt;code&amp;gt;classlist_full.csv&amp;lt;/code&amp;gt; with more information). The instructor could keep other files in this &amp;lt;code&amp;gt;private&amp;lt;/code&amp;gt; directory that is meant to be private (e.g., model solutions or grading information).&lt;br /&gt;
&lt;br /&gt;
Inside the &amp;lt;code&amp;gt;~/private/&amp;lt;/code&amp;gt; directory of the course account, there is also a &amp;lt;code&amp;gt;students&amp;lt;/code&amp;gt; directory that has symbolic links to each of the student&#039;s course directories in the course. For example, if the course is cs151, and if the user jdoe12345@isuad.indstate.edu is a student in the course, then there will be a link &amp;lt;code&amp;gt;/home/cs151/private/students/jdoe12345@isuad.indstate.edu&amp;lt;/code&amp;gt; that is a link to the cs151 directory for this student (&amp;lt;code&amp;gt;/home/jdoe12345@isuad.indstate.edu/cs151/&amp;lt;/code&amp;gt;). The instructor for the course can quickly get into the students&#039; directories for the course (but not their home directory) by going to the private/students/ directory and going from there.&lt;br /&gt;
&lt;br /&gt;
The accounts for the instructors of the course are set so they can sudo as the course account. If the instructor of CS 151 uses the local account &amp;lt;code&amp;gt;jkinne&amp;lt;/code&amp;gt; then this user can run the following command to get a shell running as the CS 151 course account: &amp;lt;code&amp;gt;sudo -u cs151 -i&amp;lt;/code&amp;gt;&lt;br /&gt;
Note that this only works for local accounts, and does not work for ISU Portal accounts (it might work for the jkinne local account but not for the jkinne@isuad.indstate.edu account).&lt;br /&gt;
&lt;br /&gt;
====Change of Semester and Backups====&lt;br /&gt;
Before the next semester, a backup copy of each course account will be created that will be in the course&#039;s &amp;lt;code&amp;gt;~/private/backup/&amp;lt;/code&amp;gt; directory. A directory will be created for the term, and it will have all of the course account&#039;s files from that term within it.&lt;br /&gt;
&lt;br /&gt;
Once the backup has been created for the previous term, the instructor for the current semester can remove files and directories that are no longer needed for the new term. For example, you can clear out the assignment directories in the course account&#039;s home directory, and also the student submissions that are in &amp;lt;code&amp;gt;~/private/submissions/&amp;lt;/code&amp;gt;. Those files will still be in the backup directory in case you need them later. &lt;br /&gt;
&lt;br /&gt;
When the new semester starts (if the course is running in the new semester), the following in the &amp;lt;code&amp;gt;~/private&amp;lt;/code&amp;gt; directory will be updated to be for the new term: classlist_brief.csv, classlist_full.csv, students directory (symbolic links to new semester&#039;s students).&lt;br /&gt;
&lt;br /&gt;
=Websites / Webservers=&lt;br /&gt;
==Apache==&lt;br /&gt;
The main cs.indstate.edu website uses the Apache web server. This is configured so that any user can put html and php files in the right directory in their account to be on the web server. Jeff Kinne, who has portal id &amp;lt;code&amp;gt;jkinne&amp;lt;/code&amp;gt; and therefore account on the server with home directory &amp;lt;code&amp;gt;jkinne@isuad.indstate.edu&amp;lt;/code&amp;gt;, would do the following to create the right directories.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~jkinne@isuad.indstate.edu   # jkinne&#039;s home directory&lt;br /&gt;
mkdir public_html               # directory apache looks in for website files&lt;br /&gt;
setfacl -m group:www-data:x .   # give apache execute access to home directory&lt;br /&gt;
setfacl -R -m group:www-data:rX public_html          # give apache rX access to public_html&lt;br /&gt;
setfacl -R -m default:group:www-data:rX public_html  # and new files will also have access&lt;br /&gt;
cd public_html                  # go into that directory&lt;br /&gt;
echo &amp;quot;Hello world&amp;quot; &amp;gt; index.html # write a hello world file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then the file index.html will be accessible on the web at https://cs.indstate.edu/~jkinne@isuad.indstate.edu. Since the web server is Apache, you can look for help on the Apache web server about configuration options (in particular .htaccess files that you can put in your public_html directory to change some settings). By default, the Apache web server understands html and php files. There may be other types of files you would want it to be able to understand; if so you can write to root@cs.indstate.edu.&lt;br /&gt;
&lt;br /&gt;
==Node, Django, etc.==&lt;br /&gt;
Node, Django, and many other web server frameworks can also be run off of the CS server. These generally will pick a port that they will run off of, and you run the main file for your server. Note that the Apache web server uses the &amp;quot;standard&amp;quot; ports (80 for http and 443 for https), so you cannot use those. If you want to run a Node, Django, or similar web server off of the CS server, you need to pick a port that isn&#039;t used for anything else. You should never pick a port number that is below 1024 and really should avoid port numbers below 10000. If you want to make sure to pick a port that will not interfere with anything, write to root@cs.indstate.edu. If you were to run your node web server with port 60000, then you would browse to it on the web at https://cs.indstate.edu:60000. Note that there is indeed normally a node server running on that particular port.&lt;br /&gt;
&lt;br /&gt;
=Assignments=&lt;br /&gt;
Any directory within the course account can be used as an assignment. For example, suppose the account &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; contains a directory &amp;lt;code&amp;gt;h7&amp;lt;/code&amp;gt;. This directory might have files for the students to use on the assignment; they can view these files by going to the directory &amp;lt;code&amp;gt;/home/cs151/h7/&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
A student can &amp;quot;checkout&amp;quot; or &amp;quot;get&amp;quot; an assignment by running&lt;br /&gt;
&amp;lt;pre&amp;gt;hw_get.py cs151 h7&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will copy the &amp;lt;code&amp;gt;h7&amp;lt;/code&amp;gt; directory that is in the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; account into the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directory of the user that executes the command.&lt;br /&gt;
&lt;br /&gt;
An instructor can collect an assignment by running the script &amp;lt;code&amp;gt;hw_collect.py&amp;lt;/code&amp;gt;. For the above example, the instructor would run: &amp;lt;code&amp;gt;hw_collect.py cs151 h7&amp;lt;/code&amp;gt;. This will go into each student in the course&#039;s &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directory and copy their h7 directory into &amp;lt;code&amp;gt;/home/cs151/private/submissions/h7/&amp;lt;/code&amp;gt;. There will be a new directory in that submissions directory for the date and time the submissions were collected. For example, if the user jdoe12345@isuad.indstate.edu is in the cs151 course, then the contents of &amp;lt;code&amp;gt;/home/jdoe12345@isuad.indstate.edu/h7/&amp;lt;/code&amp;gt; will be copied into the submission directory (inside of &amp;lt;code&amp;gt;/home/cs151/private/submissions/h7/&amp;lt;/code&amp;gt;). The directory &amp;lt;code&amp;gt;/home/cs151/private/submissions/h7/&amp;lt;/code&amp;gt; will have a symbolic link &amp;lt;code&amp;gt;latest&amp;lt;/code&amp;gt; that is a pointer to the latest submission.&lt;br /&gt;
&lt;br /&gt;
There is a system in place that can be used for auto-checking the output of student programs. The instructor creates a file &amp;lt;code&amp;gt;.tests.json&amp;lt;/code&amp;gt; inside of the assignment directory that has the test cases. The instructor will also need to create a correct working version of each program that can be run to get the &amp;quot;correct&amp;quot; results. The students will use the &amp;lt;code&amp;gt;hw_check.py&amp;lt;/code&amp;gt; command to check their output. The instructor can also use the same comment to check student submissions. You can get more details about how this works by logging into the system and running: &amp;lt;code&amp;gt;hw_check.py --help&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=Spring 2026=&lt;br /&gt;
The following is the list of courses that are supported on the server for the fall 2025, along with the instructor accounts (aka admin accounts) for each course.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
course,admin_accounts&lt;br /&gt;
cs151,&amp;quot;jkinne,jeff,jkinne@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs170,&amp;quot;hrafieipour@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs201,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs203,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs211,&amp;quot;mjenkins1@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs351,&amp;quot;rabhyankar@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs331,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs401,cs501&amp;quot;,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs401L,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs456,cs556&amp;quot;,&amp;quot;jcompton5,jcompton5@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs456L,&amp;quot;jcompton5,jcompton5@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs457,cs557&amp;quot;,&amp;quot;kwexoo,kexoo@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs457L,&amp;quot;kwexoo,kexoo@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs458,cs558&amp;quot;,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs458L,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs469,cs569&amp;quot;,&amp;quot;katterson1,katterson1@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs475,cs575&amp;quot;,&amp;quot;rabhyankar@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs500,&amp;quot;jkinne,jeff,jkinne@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs600,&amp;quot;arash,arafiey@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs601,cs417&amp;quot;,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs609,&amp;quot;katterson1,katterson1@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs611,&amp;quot;rabhyankar@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs618,&amp;quot;shosseini@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs685,&amp;quot;arash,arafiey@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs695,&amp;quot;arash,arafiey@isuad.indstate.edu&amp;quot;&lt;br /&gt;
ect438,&amp;quot;jkinne,jeff,jkinne@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If any course instructors would like any additions, subtractions, or changes to these, let the sys-admin know.&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=CS_accounts&amp;diff=822</id>
		<title>CS accounts</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=CS_accounts&amp;diff=822"/>
		<updated>2026-06-03T01:50:39Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: /* ISU Portal Accounts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page gives information about logging into and using the CS server (cs.indstate.edu). For help about getting started with using the terminal once you can login, see [[Linux and CS Systems - Getting Started]].&lt;br /&gt;
&lt;br /&gt;
=Logging In=&lt;br /&gt;
The CS server is a Linux server. The primary ways you will login to the server is either (a) with a terminal (aka shell) that allows you to type text commands, or (b) with an sftp program to transfer files between your computer and the server. In either case, you need a username (aka login) and password. There are two types of accounts on the system - ISU portal accounts, and local accounts.&lt;br /&gt;
&lt;br /&gt;
==ISU Portal Accounts==&lt;br /&gt;
Any student/faculty/staff who is involved in CS courses or programs (enrolled in a course, teaching a course, etc.) can login to cs.indstate.edu using their full ISU email address and portal password. The first time you login to the system, an account is created on the system that you can use. It will set your home directory on the system to &amp;lt;code&amp;gt;/home/SID@isuad.indstate.edu/&amp;lt;/code&amp;gt; where &amp;lt;code&amp;gt;SID&amp;lt;/code&amp;gt; is your portal id (aka sycamore id - for students it is the part before the @sycamores in your email address). After logging in, you can run the &amp;lt;code&amp;gt;pwd&amp;lt;/code&amp;gt; command to see this.&lt;br /&gt;
&lt;br /&gt;
For those familiar with Linux already... Note that there is not currently &amp;quot;finger information&amp;quot; about ISU portal account users. In fact, trying to run something like &amp;quot;finger jkinne@isuad.indstate.edu&amp;quot; will fail. Note that instructors of current courses can get a class list (aka roster) of accounts for their course; see below.&lt;br /&gt;
&lt;br /&gt;
==Local Accounts==&lt;br /&gt;
Some users will have accounts on the CS server that are not tied to their ISU portal accounts. For example, CS faculty have local accounts, and a number of users of the server prior to 2025 have local accounts. These are accounts with username and password that were created just on the server (the ability to login to the server with ISU portal credentials was added in 2025). Any new instructor teaching a CS course can ask for a local account if you do not have one already - write to root@cs.indstate.edu.&lt;br /&gt;
&lt;br /&gt;
==SSH Key==&lt;br /&gt;
You can setup an SSH key to login to the system. You will first need to login to the system normally. Once you are logged in, you can run the following commands.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/.ssh     # in case it does not exist yet&lt;br /&gt;
chmod 700 ~/.ssh # make sure this directory is not accessible to other users&lt;br /&gt;
ssh-keygen       # create keys for logging in&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
You will then transfer the private key file (the one that does not end in .pub) to your local computer in the location for ssh keys.&lt;br /&gt;
&lt;br /&gt;
= CS Server Policies =&lt;br /&gt;
== Prohibitions ==&lt;br /&gt;
For any accounts that you have on the CS server, you should follow all ISU policies.  In particular the following are prohibited - &lt;br /&gt;
* using your account to store or distribute anything that is against its terms/copyright/etc. (e.g., no movies, textbooks, answers to HW problems)&lt;br /&gt;
* using your account to do anything that is illegal&lt;br /&gt;
* using a password that is too easy to guess (i.e., a password cracker that we run finds your password)&lt;br /&gt;
* overloading the CPU or GPU of the system, or filling up any of the system drives&lt;br /&gt;
* anything that is along these lines that we have not thought to state explicitly&lt;br /&gt;
A violation of any of these will result in your account being locked and no longer being allowed to have an account on the systems.&lt;br /&gt;
&lt;br /&gt;
== Inactivity ==&lt;br /&gt;
Accounts that are not used for a period of 6 months will likely be locked as a security precaution. You can write to root@cs.indstate.edu to ask to have your account unlocked again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Student Use and Course Account=&lt;br /&gt;
For courses that are currently being offered, if the course uses the server, a class account is created that the instructor of the course can use if they like. This is explained with two examples: CS 151 Intro to Computer Science, and CS 473/573 Computer Networks.&lt;br /&gt;
&lt;br /&gt;
==Course Account==&lt;br /&gt;
An account on the system is created where files for the class can be kept that are to be shared with the students. For CS 151, the account created has username &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt;. For CS 473/573, a single account, &amp;lt;code&amp;gt;cs473&amp;lt;/code&amp;gt;, is created that is to be used for both courses.&lt;br /&gt;
&lt;br /&gt;
==Student Use==&lt;br /&gt;
For students who are currently enrolled in a CS course that uses the server, the first time you login to the system with your ISU portal account, a directory should be created within your account for the course. For example, students in CS 151 will have a directory &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt;, and students in CS 473/573 will have a directory &amp;lt;code&amp;gt;cs473&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Permissions are set on the system so that instructors of the course have read access to the files within student&#039;s course directories for their courses. The instructor for CS 151 will have read access to the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directories of the students enrolled in CS 151; the instructor for CS 473/573 will have read access to the &amp;lt;code&amp;gt;cs473&amp;lt;/code&amp;gt; directories of the students enrolled in CS 473/573; etc. The instructor of the course might have the students submit their work on the server within these directories. Each instructor can choose how they would like to do this.&lt;br /&gt;
&lt;br /&gt;
The course account for each course also has read access to the directories for that course. For example, the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; account will have read access to the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directories within any student enrolled in CS 151.&lt;br /&gt;
&lt;br /&gt;
==Course Account - Instructor Private Files==&lt;br /&gt;
The course account is created with a &amp;lt;code&amp;gt;~/private&amp;lt;/code&amp;gt; directory that is not accessible to other users (i.e., not accessible to students). The class list (aka roster) of students and their accounts is put into this directory (&amp;lt;code&amp;gt;classlist_brief.csv&amp;lt;/code&amp;gt; with the most important information for each student, and &amp;lt;code&amp;gt;classlist_full.csv&amp;lt;/code&amp;gt; with more information). The instructor could keep other files in this &amp;lt;code&amp;gt;private&amp;lt;/code&amp;gt; directory that is meant to be private (e.g., model solutions or grading information).&lt;br /&gt;
&lt;br /&gt;
Inside the &amp;lt;code&amp;gt;~/private/&amp;lt;/code&amp;gt; directory of the course account, there is also a &amp;lt;code&amp;gt;students&amp;lt;/code&amp;gt; directory that has symbolic links to each of the student&#039;s course directories in the course. For example, if the course is cs151, and if the user jdoe12345@isuad.indstate.edu is a student in the course, then there will be a link &amp;lt;code&amp;gt;/home/cs151/private/students/jdoe12345@isuad.indstate.edu&amp;lt;/code&amp;gt; that is a link to the cs151 directory for this student (&amp;lt;code&amp;gt;/home/jdoe12345@isuad.indstate.edu/cs151/&amp;lt;/code&amp;gt;). The instructor for the course can quickly get into the students&#039; directories for the course (but not their home directory) by going to the private/students/ directory and going from there.&lt;br /&gt;
&lt;br /&gt;
The accounts for the instructors of the course are set so they can sudo as the course account. If the instructor of CS 151 uses the local account &amp;lt;code&amp;gt;jkinne&amp;lt;/code&amp;gt; then this user can run the following command to get a shell running as the CS 151 course account: &amp;lt;code&amp;gt;sudo -u cs151 -i&amp;lt;/code&amp;gt;&lt;br /&gt;
Note that this only works for local accounts, and does not work for ISU Portal accounts (it might work for the jkinne local account but not for the jkinne@isuad.indstate.edu account).&lt;br /&gt;
&lt;br /&gt;
====Change of Semester and Backups====&lt;br /&gt;
Before the next semester, a backup copy of each course account will be created that will be in the course&#039;s &amp;lt;code&amp;gt;~/private/backup/&amp;lt;/code&amp;gt; directory. A directory will be created for the term, and it will have all of the course account&#039;s files from that term within it.&lt;br /&gt;
&lt;br /&gt;
Once the backup has been created for the previous term, the instructor for the current semester can remove files and directories that are no longer needed for the new term. For example, you can clear out the assignment directories in the course account&#039;s home directory, and also the student submissions that are in &amp;lt;code&amp;gt;~/private/submissions/&amp;lt;/code&amp;gt;. Those files will still be in the backup directory in case you need them later. &lt;br /&gt;
&lt;br /&gt;
When the new semester starts (if the course is running in the new semester), the following in the &amp;lt;code&amp;gt;~/private&amp;lt;/code&amp;gt; directory will be updated to be for the new term: classlist_brief.csv, classlist_full.csv, students directory (symbolic links to new semester&#039;s students).&lt;br /&gt;
&lt;br /&gt;
=Websites / Webservers=&lt;br /&gt;
==Apache==&lt;br /&gt;
The main cs.indstate.edu website uses the Apache web server. This is configured so that any user can put html and php files in the right directory in their account to be on the web server. Jeff Kinne, who has portal id &amp;lt;code&amp;gt;jkinne&amp;lt;/code&amp;gt; and therefore account on the server with home directory &amp;lt;code&amp;gt;jkinne@isuad.indstate.edu&amp;lt;/code&amp;gt;, would do the following to create the right directories.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~jkinne@isuad.indstate.edu   # jkinne&#039;s home directory&lt;br /&gt;
mkdir public_html               # directory apache looks in for website files&lt;br /&gt;
setfacl -m group:www-data:x .   # give apache execute access to home directory&lt;br /&gt;
setfacl -R -m group:www-data:rX public_html          # give apache rX access to public_html&lt;br /&gt;
setfacl -R -m default:group:www-data:rX public_html  # and new files will also have access&lt;br /&gt;
cd public_html                  # go into that directory&lt;br /&gt;
echo &amp;quot;Hello world&amp;quot; &amp;gt; index.html # write a hello world file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then the file index.html will be accessible on the web at https://cs.indstate.edu/~jkinne@isuad.indstate.edu. Since the web server is Apache, you can look for help on the Apache web server about configuration options (in particular .htaccess files that you can put in your public_html directory to change some settings). By default, the Apache web server understands html and php files. There may be other types of files you would want it to be able to understand; if so you can write to root@cs.indstate.edu.&lt;br /&gt;
&lt;br /&gt;
==Node, Django, etc.==&lt;br /&gt;
Node, Django, and many other web server frameworks can also be run off of the CS server. These generally will pick a port that they will run off of, and you run the main file for your server. Note that the Apache web server uses the &amp;quot;standard&amp;quot; ports (80 for http and 443 for https), so you cannot use those. If you want to run a Node, Django, or similar web server off of the CS server, you need to pick a port that isn&#039;t used for anything else. You should never pick a port number that is below 1024 and really should avoid port numbers below 10000. If you want to make sure to pick a port that will not interfere with anything, write to root@cs.indstate.edu. If you were to run your node web server with port 60000, then you would browse to it on the web at https://cs.indstate.edu:60000. Note that there is indeed normally a node server running on that particular port.&lt;br /&gt;
&lt;br /&gt;
=Assignments=&lt;br /&gt;
Any directory within the course account can be used as an assignment. For example, suppose the account &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; contains a directory &amp;lt;code&amp;gt;h7&amp;lt;/code&amp;gt;. This directory might have files for the students to use on the assignment; they can view these files by going to the directory &amp;lt;code&amp;gt;/home/cs151/h7/&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
A student can &amp;quot;checkout&amp;quot; or &amp;quot;get&amp;quot; an assignment by running&lt;br /&gt;
&amp;lt;pre&amp;gt;hw_get.py cs151 h7&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will copy the &amp;lt;code&amp;gt;h7&amp;lt;/code&amp;gt; directory that is in the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; account into the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directory of the user that executes the command.&lt;br /&gt;
&lt;br /&gt;
An instructor can collect an assignment by running the script &amp;lt;code&amp;gt;hw_collect.py&amp;lt;/code&amp;gt;. For the above example, the instructor would run: &amp;lt;code&amp;gt;hw_collect.py cs151 h7&amp;lt;/code&amp;gt;. This will go into each student in the course&#039;s &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directory and copy their h7 directory into &amp;lt;code&amp;gt;/home/cs151/private/submissions/h7/&amp;lt;/code&amp;gt;. There will be a new directory in that submissions directory for the date and time the submissions were collected. For example, if the user jdoe12345@isuad.indstate.edu is in the cs151 course, then the contents of &amp;lt;code&amp;gt;/home/jdoe12345@isuad.indstate.edu/h7/&amp;lt;/code&amp;gt; will be copied into the submission directory (inside of &amp;lt;code&amp;gt;/home/cs151/private/submissions/h7/&amp;lt;/code&amp;gt;). The directory &amp;lt;code&amp;gt;/home/cs151/private/submissions/h7/&amp;lt;/code&amp;gt; will have a symbolic link &amp;lt;code&amp;gt;latest&amp;lt;/code&amp;gt; that is a pointer to the latest submission.&lt;br /&gt;
&lt;br /&gt;
There is a system in place that can be used for auto-checking the output of student programs. The instructor creates a file &amp;lt;code&amp;gt;.tests.json&amp;lt;/code&amp;gt; inside of the assignment directory that has the test cases. The instructor will also need to create a correct working version of each program that can be run to get the &amp;quot;correct&amp;quot; results. The students will use the &amp;lt;code&amp;gt;hw_check.py&amp;lt;/code&amp;gt; command to check their output. The instructor can also use the same comment to check student submissions. You can get more details about how this works by logging into the system and running: &amp;lt;code&amp;gt;hw_check.py --help&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=Spring 2026=&lt;br /&gt;
The following is the list of courses that are supported on the server for the fall 2025, along with the instructor accounts (aka admin accounts) for each course.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
course,admin_accounts&lt;br /&gt;
cs151,&amp;quot;jkinne,jeff,jkinne@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs170,&amp;quot;hrafieipour@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs201,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs203,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs211,&amp;quot;mjenkins1@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs351,&amp;quot;rabhyankar@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs331,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs401,cs501&amp;quot;,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs401L,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs456,cs556&amp;quot;,&amp;quot;jcompton5,jcompton5@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs456L,&amp;quot;jcompton5,jcompton5@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs457,cs557&amp;quot;,&amp;quot;kwexoo,kexoo@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs457L,&amp;quot;kwexoo,kexoo@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs458,cs558&amp;quot;,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs458L,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs469,cs569&amp;quot;,&amp;quot;katterson1,katterson1@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs475,cs575&amp;quot;,&amp;quot;rabhyankar@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs500,&amp;quot;jkinne,jeff,jkinne@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs600,&amp;quot;arash,arafiey@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs601,cs417&amp;quot;,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs609,&amp;quot;katterson1,katterson1@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs611,&amp;quot;rabhyankar@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs618,&amp;quot;shosseini@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs685,&amp;quot;arash,arafiey@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs695,&amp;quot;arash,arafiey@isuad.indstate.edu&amp;quot;&lt;br /&gt;
ect438,&amp;quot;jkinne,jeff,jkinne@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If any course instructors would like any additions, subtractions, or changes to these, let the sys-admin know.&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=CS_accounts&amp;diff=821</id>
		<title>CS accounts</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=CS_accounts&amp;diff=821"/>
		<updated>2026-06-03T01:49:36Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: /* Logging In */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page gives information about logging into and using the CS server (cs.indstate.edu). For help about getting started with using the terminal once you can login, see [[Linux and CS Systems - Getting Started]].&lt;br /&gt;
&lt;br /&gt;
=Logging In=&lt;br /&gt;
The CS server is a Linux server. The primary ways you will login to the server is either (a) with a terminal (aka shell) that allows you to type text commands, or (b) with an sftp program to transfer files between your computer and the server. In either case, you need a username (aka login) and password. There are two types of accounts on the system - ISU portal accounts, and local accounts.&lt;br /&gt;
&lt;br /&gt;
==ISU Portal Accounts==&lt;br /&gt;
Any student/faculty/staff who is involved in CS courses or programs (enrolled in a course, teaching a course, etc.) can login to cs.indstate.edu using their full ISU email address and portal password. The first time you login to the system, an account is created on the system that you can use. It will set your home directory on the system to &amp;lt;code&amp;gt;/home/SID@isuad.indstate.edu/&amp;lt;/code&amp;gt; where &amp;lt;code&amp;gt;SID&amp;lt;/code&amp;gt; is your portal id (aka sycamore id - for students it is the part before the @sycamores in your email address). After logging in, you can run the &amp;lt;code&amp;gt;pwd&amp;lt;/code&amp;gt; command to see this.&lt;br /&gt;
&lt;br /&gt;
Note that there is not currently &amp;quot;finger information&amp;quot; about ISU portal account users. In fact, trying to run something like &amp;quot;finger jkinne@isuad.indstate.edu&amp;quot; will fail. Note that instructors of current courses can get a class list (aka roster) of accounts for their course; see below.&lt;br /&gt;
&lt;br /&gt;
==Local Accounts==&lt;br /&gt;
Some users will have accounts on the CS server that are not tied to their ISU portal accounts. For example, CS faculty have local accounts, and a number of users of the server prior to 2025 have local accounts. These are accounts with username and password that were created just on the server (the ability to login to the server with ISU portal credentials was added in 2025). Any new instructor teaching a CS course can ask for a local account if you do not have one already - write to root@cs.indstate.edu.&lt;br /&gt;
&lt;br /&gt;
==SSH Key==&lt;br /&gt;
You can setup an SSH key to login to the system. You will first need to login to the system normally. Once you are logged in, you can run the following commands.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ~/.ssh     # in case it does not exist yet&lt;br /&gt;
chmod 700 ~/.ssh # make sure this directory is not accessible to other users&lt;br /&gt;
ssh-keygen       # create keys for logging in&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
You will then transfer the private key file (the one that does not end in .pub) to your local computer in the location for ssh keys.&lt;br /&gt;
&lt;br /&gt;
= CS Server Policies =&lt;br /&gt;
== Prohibitions ==&lt;br /&gt;
For any accounts that you have on the CS server, you should follow all ISU policies.  In particular the following are prohibited - &lt;br /&gt;
* using your account to store or distribute anything that is against its terms/copyright/etc. (e.g., no movies, textbooks, answers to HW problems)&lt;br /&gt;
* using your account to do anything that is illegal&lt;br /&gt;
* using a password that is too easy to guess (i.e., a password cracker that we run finds your password)&lt;br /&gt;
* overloading the CPU or GPU of the system, or filling up any of the system drives&lt;br /&gt;
* anything that is along these lines that we have not thought to state explicitly&lt;br /&gt;
A violation of any of these will result in your account being locked and no longer being allowed to have an account on the systems.&lt;br /&gt;
&lt;br /&gt;
== Inactivity ==&lt;br /&gt;
Accounts that are not used for a period of 6 months will likely be locked as a security precaution. You can write to root@cs.indstate.edu to ask to have your account unlocked again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Student Use and Course Account=&lt;br /&gt;
For courses that are currently being offered, if the course uses the server, a class account is created that the instructor of the course can use if they like. This is explained with two examples: CS 151 Intro to Computer Science, and CS 473/573 Computer Networks.&lt;br /&gt;
&lt;br /&gt;
==Course Account==&lt;br /&gt;
An account on the system is created where files for the class can be kept that are to be shared with the students. For CS 151, the account created has username &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt;. For CS 473/573, a single account, &amp;lt;code&amp;gt;cs473&amp;lt;/code&amp;gt;, is created that is to be used for both courses.&lt;br /&gt;
&lt;br /&gt;
==Student Use==&lt;br /&gt;
For students who are currently enrolled in a CS course that uses the server, the first time you login to the system with your ISU portal account, a directory should be created within your account for the course. For example, students in CS 151 will have a directory &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt;, and students in CS 473/573 will have a directory &amp;lt;code&amp;gt;cs473&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Permissions are set on the system so that instructors of the course have read access to the files within student&#039;s course directories for their courses. The instructor for CS 151 will have read access to the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directories of the students enrolled in CS 151; the instructor for CS 473/573 will have read access to the &amp;lt;code&amp;gt;cs473&amp;lt;/code&amp;gt; directories of the students enrolled in CS 473/573; etc. The instructor of the course might have the students submit their work on the server within these directories. Each instructor can choose how they would like to do this.&lt;br /&gt;
&lt;br /&gt;
The course account for each course also has read access to the directories for that course. For example, the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; account will have read access to the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directories within any student enrolled in CS 151.&lt;br /&gt;
&lt;br /&gt;
==Course Account - Instructor Private Files==&lt;br /&gt;
The course account is created with a &amp;lt;code&amp;gt;~/private&amp;lt;/code&amp;gt; directory that is not accessible to other users (i.e., not accessible to students). The class list (aka roster) of students and their accounts is put into this directory (&amp;lt;code&amp;gt;classlist_brief.csv&amp;lt;/code&amp;gt; with the most important information for each student, and &amp;lt;code&amp;gt;classlist_full.csv&amp;lt;/code&amp;gt; with more information). The instructor could keep other files in this &amp;lt;code&amp;gt;private&amp;lt;/code&amp;gt; directory that is meant to be private (e.g., model solutions or grading information).&lt;br /&gt;
&lt;br /&gt;
Inside the &amp;lt;code&amp;gt;~/private/&amp;lt;/code&amp;gt; directory of the course account, there is also a &amp;lt;code&amp;gt;students&amp;lt;/code&amp;gt; directory that has symbolic links to each of the student&#039;s course directories in the course. For example, if the course is cs151, and if the user jdoe12345@isuad.indstate.edu is a student in the course, then there will be a link &amp;lt;code&amp;gt;/home/cs151/private/students/jdoe12345@isuad.indstate.edu&amp;lt;/code&amp;gt; that is a link to the cs151 directory for this student (&amp;lt;code&amp;gt;/home/jdoe12345@isuad.indstate.edu/cs151/&amp;lt;/code&amp;gt;). The instructor for the course can quickly get into the students&#039; directories for the course (but not their home directory) by going to the private/students/ directory and going from there.&lt;br /&gt;
&lt;br /&gt;
The accounts for the instructors of the course are set so they can sudo as the course account. If the instructor of CS 151 uses the local account &amp;lt;code&amp;gt;jkinne&amp;lt;/code&amp;gt; then this user can run the following command to get a shell running as the CS 151 course account: &amp;lt;code&amp;gt;sudo -u cs151 -i&amp;lt;/code&amp;gt;&lt;br /&gt;
Note that this only works for local accounts, and does not work for ISU Portal accounts (it might work for the jkinne local account but not for the jkinne@isuad.indstate.edu account).&lt;br /&gt;
&lt;br /&gt;
====Change of Semester and Backups====&lt;br /&gt;
Before the next semester, a backup copy of each course account will be created that will be in the course&#039;s &amp;lt;code&amp;gt;~/private/backup/&amp;lt;/code&amp;gt; directory. A directory will be created for the term, and it will have all of the course account&#039;s files from that term within it.&lt;br /&gt;
&lt;br /&gt;
Once the backup has been created for the previous term, the instructor for the current semester can remove files and directories that are no longer needed for the new term. For example, you can clear out the assignment directories in the course account&#039;s home directory, and also the student submissions that are in &amp;lt;code&amp;gt;~/private/submissions/&amp;lt;/code&amp;gt;. Those files will still be in the backup directory in case you need them later. &lt;br /&gt;
&lt;br /&gt;
When the new semester starts (if the course is running in the new semester), the following in the &amp;lt;code&amp;gt;~/private&amp;lt;/code&amp;gt; directory will be updated to be for the new term: classlist_brief.csv, classlist_full.csv, students directory (symbolic links to new semester&#039;s students).&lt;br /&gt;
&lt;br /&gt;
=Websites / Webservers=&lt;br /&gt;
==Apache==&lt;br /&gt;
The main cs.indstate.edu website uses the Apache web server. This is configured so that any user can put html and php files in the right directory in their account to be on the web server. Jeff Kinne, who has portal id &amp;lt;code&amp;gt;jkinne&amp;lt;/code&amp;gt; and therefore account on the server with home directory &amp;lt;code&amp;gt;jkinne@isuad.indstate.edu&amp;lt;/code&amp;gt;, would do the following to create the right directories.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~jkinne@isuad.indstate.edu   # jkinne&#039;s home directory&lt;br /&gt;
mkdir public_html               # directory apache looks in for website files&lt;br /&gt;
setfacl -m group:www-data:x .   # give apache execute access to home directory&lt;br /&gt;
setfacl -R -m group:www-data:rX public_html          # give apache rX access to public_html&lt;br /&gt;
setfacl -R -m default:group:www-data:rX public_html  # and new files will also have access&lt;br /&gt;
cd public_html                  # go into that directory&lt;br /&gt;
echo &amp;quot;Hello world&amp;quot; &amp;gt; index.html # write a hello world file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then the file index.html will be accessible on the web at https://cs.indstate.edu/~jkinne@isuad.indstate.edu. Since the web server is Apache, you can look for help on the Apache web server about configuration options (in particular .htaccess files that you can put in your public_html directory to change some settings). By default, the Apache web server understands html and php files. There may be other types of files you would want it to be able to understand; if so you can write to root@cs.indstate.edu.&lt;br /&gt;
&lt;br /&gt;
==Node, Django, etc.==&lt;br /&gt;
Node, Django, and many other web server frameworks can also be run off of the CS server. These generally will pick a port that they will run off of, and you run the main file for your server. Note that the Apache web server uses the &amp;quot;standard&amp;quot; ports (80 for http and 443 for https), so you cannot use those. If you want to run a Node, Django, or similar web server off of the CS server, you need to pick a port that isn&#039;t used for anything else. You should never pick a port number that is below 1024 and really should avoid port numbers below 10000. If you want to make sure to pick a port that will not interfere with anything, write to root@cs.indstate.edu. If you were to run your node web server with port 60000, then you would browse to it on the web at https://cs.indstate.edu:60000. Note that there is indeed normally a node server running on that particular port.&lt;br /&gt;
&lt;br /&gt;
=Assignments=&lt;br /&gt;
Any directory within the course account can be used as an assignment. For example, suppose the account &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; contains a directory &amp;lt;code&amp;gt;h7&amp;lt;/code&amp;gt;. This directory might have files for the students to use on the assignment; they can view these files by going to the directory &amp;lt;code&amp;gt;/home/cs151/h7/&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
A student can &amp;quot;checkout&amp;quot; or &amp;quot;get&amp;quot; an assignment by running&lt;br /&gt;
&amp;lt;pre&amp;gt;hw_get.py cs151 h7&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will copy the &amp;lt;code&amp;gt;h7&amp;lt;/code&amp;gt; directory that is in the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; account into the &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directory of the user that executes the command.&lt;br /&gt;
&lt;br /&gt;
An instructor can collect an assignment by running the script &amp;lt;code&amp;gt;hw_collect.py&amp;lt;/code&amp;gt;. For the above example, the instructor would run: &amp;lt;code&amp;gt;hw_collect.py cs151 h7&amp;lt;/code&amp;gt;. This will go into each student in the course&#039;s &amp;lt;code&amp;gt;cs151&amp;lt;/code&amp;gt; directory and copy their h7 directory into &amp;lt;code&amp;gt;/home/cs151/private/submissions/h7/&amp;lt;/code&amp;gt;. There will be a new directory in that submissions directory for the date and time the submissions were collected. For example, if the user jdoe12345@isuad.indstate.edu is in the cs151 course, then the contents of &amp;lt;code&amp;gt;/home/jdoe12345@isuad.indstate.edu/h7/&amp;lt;/code&amp;gt; will be copied into the submission directory (inside of &amp;lt;code&amp;gt;/home/cs151/private/submissions/h7/&amp;lt;/code&amp;gt;). The directory &amp;lt;code&amp;gt;/home/cs151/private/submissions/h7/&amp;lt;/code&amp;gt; will have a symbolic link &amp;lt;code&amp;gt;latest&amp;lt;/code&amp;gt; that is a pointer to the latest submission.&lt;br /&gt;
&lt;br /&gt;
There is a system in place that can be used for auto-checking the output of student programs. The instructor creates a file &amp;lt;code&amp;gt;.tests.json&amp;lt;/code&amp;gt; inside of the assignment directory that has the test cases. The instructor will also need to create a correct working version of each program that can be run to get the &amp;quot;correct&amp;quot; results. The students will use the &amp;lt;code&amp;gt;hw_check.py&amp;lt;/code&amp;gt; command to check their output. The instructor can also use the same comment to check student submissions. You can get more details about how this works by logging into the system and running: &amp;lt;code&amp;gt;hw_check.py --help&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=Spring 2026=&lt;br /&gt;
The following is the list of courses that are supported on the server for the fall 2025, along with the instructor accounts (aka admin accounts) for each course.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
course,admin_accounts&lt;br /&gt;
cs151,&amp;quot;jkinne,jeff,jkinne@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs170,&amp;quot;hrafieipour@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs201,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs203,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs211,&amp;quot;mjenkins1@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs351,&amp;quot;rabhyankar@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs331,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs401,cs501&amp;quot;,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs401L,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs456,cs556&amp;quot;,&amp;quot;jcompton5,jcompton5@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs456L,&amp;quot;jcompton5,jcompton5@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs457,cs557&amp;quot;,&amp;quot;kwexoo,kexoo@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs457L,&amp;quot;kwexoo,kexoo@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs458,cs558&amp;quot;,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs458L,&amp;quot;namoako,namoako@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs469,cs569&amp;quot;,&amp;quot;katterson1,katterson1@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs475,cs575&amp;quot;,&amp;quot;rabhyankar@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs500,&amp;quot;jkinne,jeff,jkinne@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs600,&amp;quot;arash,arafiey@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;quot;cs601,cs417&amp;quot;,&amp;quot;majid,mafsharnoghon@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs609,&amp;quot;katterson1,katterson1@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs611,&amp;quot;rabhyankar@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs618,&amp;quot;shosseini@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs685,&amp;quot;arash,arafiey@isuad.indstate.edu&amp;quot;&lt;br /&gt;
cs695,&amp;quot;arash,arafiey@isuad.indstate.edu&amp;quot;&lt;br /&gt;
ect438,&amp;quot;jkinne,jeff,jkinne@isuad.indstate.edu&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If any course instructors would like any additions, subtractions, or changes to these, let the sys-admin know.&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=Email_Lists&amp;diff=820</id>
		<title>Email Lists</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=Email_Lists&amp;diff=820"/>
		<updated>2026-06-03T00:11:45Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: /* Maintenance */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The CS faculty maintain a variety of email lists used to send announcements and keep in touch with the CS students and faculty. Each is described briefly below. &lt;br /&gt;
&lt;br /&gt;
For those authorized to send email to the lists, you send email to the name of the list followed by @cs.indstate.edu. So to send email to the CS undergraduate students, you would compose a message to cs-ugrads@cs.indstate.edu. If you are not authorized to send a message to the list, it will be automatically ignored by the email system.&lt;br /&gt;
&lt;br /&gt;
== Students (cs-ugrads, cs-grads, cs-courses) ==&lt;br /&gt;
cs-ugrads and cs-grads are used to contact Computer Science majors (both undergraduate and graduate) about events in the department, job opportunities, etc. The lists are updated each term to include the currently enrolled and active majors of the department. There is one list each for: cs undergraduate students, cs graduate students.  cs-courses is updated each term to be all students taking any CS courses (whether the student is a CS major or not).&lt;br /&gt;
&lt;br /&gt;
Note: students do not need to sign up for these lists as long as you have declared your major by the beginning of the semester; if you have, you are automatically put on the appropriate email lists.&lt;br /&gt;
&lt;br /&gt;
The list pages are at&amp;lt;br&amp;gt;&lt;br /&gt;
http://cs.indstate.edu/mailman/listinfo/cs-ugrads/&amp;lt;br&amp;gt;&lt;br /&gt;
http://cs.indstate.edu/mailman/listinfo/cs-grads/&amp;lt;br&amp;gt;&lt;br /&gt;
http://cs.indstate.edu/mailman/listinfo/cs-courses/&lt;br /&gt;
&lt;br /&gt;
== Jobs (cs-jobs) ==&lt;br /&gt;
This email list is used to pass on potential job opportunities - internships, full time positions, etc.  Current CS students and alumni are welcome to join the list to receive these notices.  Oftentimes, job postings are sent to all of cs-grads, cs-ugrads, and cs-jobs.  &#039;&#039;&#039;cs-jobs is an opt-in list - you need to sign up for it.&#039;&#039;&#039;  The list page is at http://cs.indstate.edu/mailman/listinfo/cs-jobs/&lt;br /&gt;
&lt;br /&gt;
== Alumni (cs-alumni) ==&lt;br /&gt;
This email list is used to contact CS alumni about job opportunities or anything else that would be relevant to alumni. The list is updated each term to include those who have graduated. The list page is at http://cs.indstate.edu/mailman/listinfo/cs-alumni/&lt;br /&gt;
&lt;br /&gt;
== Faculty ==&lt;br /&gt;
This email list is used to contact Computer Science faculty. The mailing list is cs-faculty.&lt;br /&gt;
&lt;br /&gt;
== Graduate and Undergraduate Assistants ==&lt;br /&gt;
This email list contains all CS students working for the department.&lt;br /&gt;
&lt;br /&gt;
== Maintenance ==&lt;br /&gt;
Terse information on what the one maintaining the email lists does...&lt;br /&gt;
* When adding or removing from lists, you normally use the &amp;quot;Membership Management&amp;quot; link and then either &amp;quot;Mass subscription&amp;quot; or &amp;quot;Mass removal&amp;quot;. There are messages setup already so you don&#039;t need to type anything into the notes on those forms.  You also normally want to select to notify the subscriber but not the list manager.&lt;br /&gt;
* cs-alumni - mass subscription for all who earned degrees in the previous term. Do this after degrees are posted (1-2 weeks after grades are due).&lt;br /&gt;
* cs-ugrads, cs-grads - mass removal of all who graduated, mass subscription of all majors.  Update these when updating cs-alumni, and also about every week leading up to the start of the term and after the last day to add classes.&lt;br /&gt;
* cs-courses - mass removal of all from the previous term, mass subscription for all registered for the coming term.  Update these starting a few weeks before the term, and about once per week until after the last day to add classes.&lt;br /&gt;
* cs-faculty, cs-assistants - updated once per term or year as staffing and GA positions change.&lt;br /&gt;
* cs-jobs - these are opt-in, so all that needs to be done is approving or denying subscription requests (approve any request from an @sycamores.indstate.edu or @indstate.edu email address).&lt;br /&gt;
You can get to the administrative interface from the links above. For removing all from a list, you can use scripts to do this, or you can copy/paste the entire membership list into excel, then copy/paste the email column into the &amp;quot;mass removal&amp;quot; form in the web interface.&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=Email_Lists&amp;diff=819</id>
		<title>Email Lists</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=Email_Lists&amp;diff=819"/>
		<updated>2026-06-03T00:11:20Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: /* Faculty */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The CS faculty maintain a variety of email lists used to send announcements and keep in touch with the CS students and faculty. Each is described briefly below. &lt;br /&gt;
&lt;br /&gt;
For those authorized to send email to the lists, you send email to the name of the list followed by @cs.indstate.edu. So to send email to the CS undergraduate students, you would compose a message to cs-ugrads@cs.indstate.edu. If you are not authorized to send a message to the list, it will be automatically ignored by the email system.&lt;br /&gt;
&lt;br /&gt;
== Students (cs-ugrads, cs-grads, cs-courses) ==&lt;br /&gt;
cs-ugrads and cs-grads are used to contact Computer Science majors (both undergraduate and graduate) about events in the department, job opportunities, etc. The lists are updated each term to include the currently enrolled and active majors of the department. There is one list each for: cs undergraduate students, cs graduate students.  cs-courses is updated each term to be all students taking any CS courses (whether the student is a CS major or not).&lt;br /&gt;
&lt;br /&gt;
Note: students do not need to sign up for these lists as long as you have declared your major by the beginning of the semester; if you have, you are automatically put on the appropriate email lists.&lt;br /&gt;
&lt;br /&gt;
The list pages are at&amp;lt;br&amp;gt;&lt;br /&gt;
http://cs.indstate.edu/mailman/listinfo/cs-ugrads/&amp;lt;br&amp;gt;&lt;br /&gt;
http://cs.indstate.edu/mailman/listinfo/cs-grads/&amp;lt;br&amp;gt;&lt;br /&gt;
http://cs.indstate.edu/mailman/listinfo/cs-courses/&lt;br /&gt;
&lt;br /&gt;
== Jobs (cs-jobs) ==&lt;br /&gt;
This email list is used to pass on potential job opportunities - internships, full time positions, etc.  Current CS students and alumni are welcome to join the list to receive these notices.  Oftentimes, job postings are sent to all of cs-grads, cs-ugrads, and cs-jobs.  &#039;&#039;&#039;cs-jobs is an opt-in list - you need to sign up for it.&#039;&#039;&#039;  The list page is at http://cs.indstate.edu/mailman/listinfo/cs-jobs/&lt;br /&gt;
&lt;br /&gt;
== Alumni (cs-alumni) ==&lt;br /&gt;
This email list is used to contact CS alumni about job opportunities or anything else that would be relevant to alumni. The list is updated each term to include those who have graduated. The list page is at http://cs.indstate.edu/mailman/listinfo/cs-alumni/&lt;br /&gt;
&lt;br /&gt;
== Faculty ==&lt;br /&gt;
This email list is used to contact Computer Science faculty. The mailing list is cs-faculty.&lt;br /&gt;
&lt;br /&gt;
== Graduate and Undergraduate Assistants ==&lt;br /&gt;
This email list contains all CS students working for the department.&lt;br /&gt;
&lt;br /&gt;
== Maintenance ==&lt;br /&gt;
Terse information on what the one maintaining the email lists does...&lt;br /&gt;
* When adding or removing from lists, you normally use the &amp;quot;Membership Management&amp;quot; link and then either &amp;quot;Mass subscription&amp;quot; or &amp;quot;Mass removal&amp;quot;. There are messages setup already so you don&#039;t need to type anything into the notes on those forms.  You also normally want to select to notify the subscriber but not the list manager.&lt;br /&gt;
* cs-alumni - mass subscription for all who earned degrees in the previous term. Do this after degrees are posted (1-2 weeks after grades are due).&lt;br /&gt;
* cs-ugrads, cs-grads - mass removal of all who graduated, mass subscription of all majors.  Update these when updating cs-alumni, and also about every week leading up to the start of the term and after the last day to add classes.&lt;br /&gt;
* cs-courses - mass removal of all from the previous term, mass subscription for all registered for the coming term.  Update these starting a few weeks before the term, and about once per week until after the last day to add classes.&lt;br /&gt;
* cs-faculty, cs-assistants - updated once per term or year as staffing and GA positions change.&lt;br /&gt;
* cs-chat, cs-jobs - these are opt-in, so all that needs to be done is approving or denying subscription requests (approve any request from an @sycamores.indstate.edu or @indstate.edu email address).&lt;br /&gt;
You can get to the administrative interface from the links above. For removing all from a list, you can use scripts to do this, or you can copy/paste the entire membership list into excel, then copy/paste the email column into the &amp;quot;mass removal&amp;quot; form in the web interface.&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=Email_Lists&amp;diff=818</id>
		<title>Email Lists</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=Email_Lists&amp;diff=818"/>
		<updated>2026-06-03T00:09:55Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: /* Faculty */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The CS faculty maintain a variety of email lists used to send announcements and keep in touch with the CS students and faculty. Each is described briefly below. &lt;br /&gt;
&lt;br /&gt;
For those authorized to send email to the lists, you send email to the name of the list followed by @cs.indstate.edu. So to send email to the CS undergraduate students, you would compose a message to cs-ugrads@cs.indstate.edu. If you are not authorized to send a message to the list, it will be automatically ignored by the email system.&lt;br /&gt;
&lt;br /&gt;
== Students (cs-ugrads, cs-grads, cs-courses) ==&lt;br /&gt;
cs-ugrads and cs-grads are used to contact Computer Science majors (both undergraduate and graduate) about events in the department, job opportunities, etc. The lists are updated each term to include the currently enrolled and active majors of the department. There is one list each for: cs undergraduate students, cs graduate students.  cs-courses is updated each term to be all students taking any CS courses (whether the student is a CS major or not).&lt;br /&gt;
&lt;br /&gt;
Note: students do not need to sign up for these lists as long as you have declared your major by the beginning of the semester; if you have, you are automatically put on the appropriate email lists.&lt;br /&gt;
&lt;br /&gt;
The list pages are at&amp;lt;br&amp;gt;&lt;br /&gt;
http://cs.indstate.edu/mailman/listinfo/cs-ugrads/&amp;lt;br&amp;gt;&lt;br /&gt;
http://cs.indstate.edu/mailman/listinfo/cs-grads/&amp;lt;br&amp;gt;&lt;br /&gt;
http://cs.indstate.edu/mailman/listinfo/cs-courses/&lt;br /&gt;
&lt;br /&gt;
== Jobs (cs-jobs) ==&lt;br /&gt;
This email list is used to pass on potential job opportunities - internships, full time positions, etc.  Current CS students and alumni are welcome to join the list to receive these notices.  Oftentimes, job postings are sent to all of cs-grads, cs-ugrads, and cs-jobs.  &#039;&#039;&#039;cs-jobs is an opt-in list - you need to sign up for it.&#039;&#039;&#039;  The list page is at http://cs.indstate.edu/mailman/listinfo/cs-jobs/&lt;br /&gt;
&lt;br /&gt;
== Alumni (cs-alumni) ==&lt;br /&gt;
This email list is used to contact CS alumni about job opportunities or anything else that would be relevant to alumni. The list is updated each term to include those who have graduated. The list page is at http://cs.indstate.edu/mailman/listinfo/cs-alumni/&lt;br /&gt;
&lt;br /&gt;
== Faculty ==&lt;br /&gt;
This email list is used to contact Computer Science faculty. The mailing list is cs-faculty.&lt;br /&gt;
&lt;br /&gt;
== Maintenance ==&lt;br /&gt;
Terse information on what the one maintaining the email lists does...&lt;br /&gt;
* When adding or removing from lists, you normally use the &amp;quot;Membership Management&amp;quot; link and then either &amp;quot;Mass subscription&amp;quot; or &amp;quot;Mass removal&amp;quot;. There are messages setup already so you don&#039;t need to type anything into the notes on those forms.  You also normally want to select to notify the subscriber but not the list manager.&lt;br /&gt;
* cs-alumni - mass subscription for all who earned degrees in the previous term. Do this after degrees are posted (1-2 weeks after grades are due).&lt;br /&gt;
* cs-ugrads, cs-grads - mass removal of all who graduated, mass subscription of all majors.  Update these when updating cs-alumni, and also about every week leading up to the start of the term and after the last day to add classes.&lt;br /&gt;
* cs-courses - mass removal of all from the previous term, mass subscription for all registered for the coming term.  Update these starting a few weeks before the term, and about once per week until after the last day to add classes.&lt;br /&gt;
* cs-faculty, cs-assistants - updated once per term or year as staffing and GA positions change.&lt;br /&gt;
* cs-chat, cs-jobs - these are opt-in, so all that needs to be done is approving or denying subscription requests (approve any request from an @sycamores.indstate.edu or @indstate.edu email address).&lt;br /&gt;
You can get to the administrative interface from the links above. For removing all from a list, you can use scripts to do this, or you can copy/paste the entire membership list into excel, then copy/paste the email column into the &amp;quot;mass removal&amp;quot; form in the web interface.&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=Email_Lists&amp;diff=817</id>
		<title>Email Lists</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=Email_Lists&amp;diff=817"/>
		<updated>2026-06-03T00:09:33Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: /* Jobs (cs-jobs) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The CS faculty maintain a variety of email lists used to send announcements and keep in touch with the CS students and faculty. Each is described briefly below. &lt;br /&gt;
&lt;br /&gt;
For those authorized to send email to the lists, you send email to the name of the list followed by @cs.indstate.edu. So to send email to the CS undergraduate students, you would compose a message to cs-ugrads@cs.indstate.edu. If you are not authorized to send a message to the list, it will be automatically ignored by the email system.&lt;br /&gt;
&lt;br /&gt;
== Students (cs-ugrads, cs-grads, cs-courses) ==&lt;br /&gt;
cs-ugrads and cs-grads are used to contact Computer Science majors (both undergraduate and graduate) about events in the department, job opportunities, etc. The lists are updated each term to include the currently enrolled and active majors of the department. There is one list each for: cs undergraduate students, cs graduate students.  cs-courses is updated each term to be all students taking any CS courses (whether the student is a CS major or not).&lt;br /&gt;
&lt;br /&gt;
Note: students do not need to sign up for these lists as long as you have declared your major by the beginning of the semester; if you have, you are automatically put on the appropriate email lists.&lt;br /&gt;
&lt;br /&gt;
The list pages are at&amp;lt;br&amp;gt;&lt;br /&gt;
http://cs.indstate.edu/mailman/listinfo/cs-ugrads/&amp;lt;br&amp;gt;&lt;br /&gt;
http://cs.indstate.edu/mailman/listinfo/cs-grads/&amp;lt;br&amp;gt;&lt;br /&gt;
http://cs.indstate.edu/mailman/listinfo/cs-courses/&lt;br /&gt;
&lt;br /&gt;
== Jobs (cs-jobs) ==&lt;br /&gt;
This email list is used to pass on potential job opportunities - internships, full time positions, etc.  Current CS students and alumni are welcome to join the list to receive these notices.  Oftentimes, job postings are sent to all of cs-grads, cs-ugrads, and cs-jobs.  &#039;&#039;&#039;cs-jobs is an opt-in list - you need to sign up for it.&#039;&#039;&#039;  The list page is at http://cs.indstate.edu/mailman/listinfo/cs-jobs/&lt;br /&gt;
&lt;br /&gt;
== Alumni (cs-alumni) ==&lt;br /&gt;
This email list is used to contact CS alumni about job opportunities or anything else that would be relevant to alumni. The list is updated each term to include those who have graduated. The list page is at http://cs.indstate.edu/mailman/listinfo/cs-alumni/&lt;br /&gt;
&lt;br /&gt;
== Faculty ==&lt;br /&gt;
This email list is used to contact Computer Science faculty. The list is managed (not open to subscription requests). The mailing list is cs-faculty.&lt;br /&gt;
&lt;br /&gt;
== Maintenance ==&lt;br /&gt;
Terse information on what the one maintaining the email lists does...&lt;br /&gt;
* When adding or removing from lists, you normally use the &amp;quot;Membership Management&amp;quot; link and then either &amp;quot;Mass subscription&amp;quot; or &amp;quot;Mass removal&amp;quot;. There are messages setup already so you don&#039;t need to type anything into the notes on those forms.  You also normally want to select to notify the subscriber but not the list manager.&lt;br /&gt;
* cs-alumni - mass subscription for all who earned degrees in the previous term. Do this after degrees are posted (1-2 weeks after grades are due).&lt;br /&gt;
* cs-ugrads, cs-grads - mass removal of all who graduated, mass subscription of all majors.  Update these when updating cs-alumni, and also about every week leading up to the start of the term and after the last day to add classes.&lt;br /&gt;
* cs-courses - mass removal of all from the previous term, mass subscription for all registered for the coming term.  Update these starting a few weeks before the term, and about once per week until after the last day to add classes.&lt;br /&gt;
* cs-faculty, cs-assistants - updated once per term or year as staffing and GA positions change.&lt;br /&gt;
* cs-chat, cs-jobs - these are opt-in, so all that needs to be done is approving or denying subscription requests (approve any request from an @sycamores.indstate.edu or @indstate.edu email address).&lt;br /&gt;
You can get to the administrative interface from the links above. For removing all from a list, you can use scripts to do this, or you can copy/paste the entire membership list into excel, then copy/paste the email column into the &amp;quot;mass removal&amp;quot; form in the web interface.&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=Email_Lists&amp;diff=816</id>
		<title>Email Lists</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=Email_Lists&amp;diff=816"/>
		<updated>2026-06-03T00:08:19Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The CS faculty maintain a variety of email lists used to send announcements and keep in touch with the CS students and faculty. Each is described briefly below. &lt;br /&gt;
&lt;br /&gt;
For those authorized to send email to the lists, you send email to the name of the list followed by @cs.indstate.edu. So to send email to the CS undergraduate students, you would compose a message to cs-ugrads@cs.indstate.edu. If you are not authorized to send a message to the list, it will be automatically ignored by the email system.&lt;br /&gt;
&lt;br /&gt;
== Students (cs-ugrads, cs-grads, cs-courses) ==&lt;br /&gt;
cs-ugrads and cs-grads are used to contact Computer Science majors (both undergraduate and graduate) about events in the department, job opportunities, etc. The lists are updated each term to include the currently enrolled and active majors of the department. There is one list each for: cs undergraduate students, cs graduate students.  cs-courses is updated each term to be all students taking any CS courses (whether the student is a CS major or not).&lt;br /&gt;
&lt;br /&gt;
Note: students do not need to sign up for these lists as long as you have declared your major by the beginning of the semester; if you have, you are automatically put on the appropriate email lists.&lt;br /&gt;
&lt;br /&gt;
The list pages are at&amp;lt;br&amp;gt;&lt;br /&gt;
http://cs.indstate.edu/mailman/listinfo/cs-ugrads/&amp;lt;br&amp;gt;&lt;br /&gt;
http://cs.indstate.edu/mailman/listinfo/cs-grads/&amp;lt;br&amp;gt;&lt;br /&gt;
http://cs.indstate.edu/mailman/listinfo/cs-courses/&lt;br /&gt;
&lt;br /&gt;
== Jobs (cs-jobs) ==&lt;br /&gt;
This email list is used to pass on potential job opportunities - internships, full time positions, etc.  Current CS students and alumni are welcome to join the list to receive these notices.  Previously job notices were sent to the other email lists, but going forward they will only be sent to cs-jobs.  &#039;&#039;&#039;This is an opt-in list - you need to sign up for it.&#039;&#039;&#039;  The list page is at http://cs.indstate.edu/mailman/listinfo/cs-jobs/&lt;br /&gt;
&lt;br /&gt;
== Alumni (cs-alumni) ==&lt;br /&gt;
This email list is used to contact CS alumni about job opportunities or anything else that would be relevant to alumni. The list is updated each term to include those who have graduated. The list page is at http://cs.indstate.edu/mailman/listinfo/cs-alumni/&lt;br /&gt;
&lt;br /&gt;
== Faculty ==&lt;br /&gt;
This email list is used to contact Computer Science faculty. The list is managed (not open to subscription requests). The mailing list is cs-faculty.&lt;br /&gt;
&lt;br /&gt;
== Maintenance ==&lt;br /&gt;
Terse information on what the one maintaining the email lists does...&lt;br /&gt;
* When adding or removing from lists, you normally use the &amp;quot;Membership Management&amp;quot; link and then either &amp;quot;Mass subscription&amp;quot; or &amp;quot;Mass removal&amp;quot;. There are messages setup already so you don&#039;t need to type anything into the notes on those forms.  You also normally want to select to notify the subscriber but not the list manager.&lt;br /&gt;
* cs-alumni - mass subscription for all who earned degrees in the previous term. Do this after degrees are posted (1-2 weeks after grades are due).&lt;br /&gt;
* cs-ugrads, cs-grads - mass removal of all who graduated, mass subscription of all majors.  Update these when updating cs-alumni, and also about every week leading up to the start of the term and after the last day to add classes.&lt;br /&gt;
* cs-courses - mass removal of all from the previous term, mass subscription for all registered for the coming term.  Update these starting a few weeks before the term, and about once per week until after the last day to add classes.&lt;br /&gt;
* cs-faculty, cs-assistants - updated once per term or year as staffing and GA positions change.&lt;br /&gt;
* cs-chat, cs-jobs - these are opt-in, so all that needs to be done is approving or denying subscription requests (approve any request from an @sycamores.indstate.edu or @indstate.edu email address).&lt;br /&gt;
You can get to the administrative interface from the links above. For removing all from a list, you can use scripts to do this, or you can copy/paste the entire membership list into excel, then copy/paste the email column into the &amp;quot;mass removal&amp;quot; form in the web interface.&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
	<entry>
		<id>https://cs.indstate.edu/web/index.php?title=Help_and_Getting_Started&amp;diff=815</id>
		<title>Help and Getting Started</title>
		<link rel="alternate" type="text/html" href="https://cs.indstate.edu/web/index.php?title=Help_and_Getting_Started&amp;diff=815"/>
		<updated>2026-06-01T22:37:26Z</updated>

		<summary type="html">&lt;p&gt;Jkinne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[CS accounts]]&lt;br /&gt;
* [[Email Lists]]&lt;br /&gt;
* [[Beginning Programming]]&lt;br /&gt;
* [[Programming and CS - Getting Started]]&lt;br /&gt;
* [[Unix Lab and Help]]&lt;br /&gt;
* [[FAQ]]&lt;/div&gt;</summary>
		<author><name>Jkinne</name></author>
	</entry>
</feed>