CS 151 - Key Skills
The following are key skills/knowledge that you need to retain after completing CS 151 Introduction to Computer Science. For any course that has CS 151 as a prerequisite, we will assume that on day one of the new course you could "ace" a quiz on all of the following content. This is the most important content to be ready for the next courses. See also CS Skills Assessments for other courses as well.
Note - this list is a first draft and is being reviewed by the faculty.
All commands and shortcuts listed in and linked from Linux and CS Systems - Getting Started. You should be able to (a) match each command and shortcut with its basic description, (b) use all of the commands and shortcuts to accomplish basic tasks (e.g., create a new directory HW in your home directory and copy all files from ~cs151/HW/ into your new HW directory), (c) describe what a given command would do (e.g., ls -l /u1/class/).
- Python cheat sheets listed at the end of Python Programming - Getting Started. You should be able to give the short description given any of the keywords, function names, or operators (and vice versa).
- Basic programs - able to complete the programs listed in Programming Assignments - Beginning 1 on demand without much trouble and without consulting the internet. You should be able to produce a correct program for any of these in a short amount of time (right away for many of them, for most of the others you might need a little bit of time). You should be able to do this on paper or on the computer. You should be able to do the same for other programming tasks of similar difficulty.
- Complete the missing code - if given mostly complete code to accomplish a task that is roughly as complex as those programs, you are able to complete the code (e.g., filling in the right condition on a loop, the right statement to update a variable, anything that is just one line or so).
- Play computer - given code you are able to trace out what happens to the variables and what is printed on the screen as the program is run.
- Syntax errors - given code that contains a syntax error you are able to identify and fix the syntax error (e.g., mismatched (), using  where should have been (), improper indenting, missing :, mis-spelled or mis-capitalized python keyword or function, etc.)
- Logical errors - given code with some logical error(s) and a description of what the program is supposed to do, you are able to debug to fix the problems.
You should have all of the items in Math for CS - Getting Started memorized and be able to apply them as needed.
You should have all of the items in CS Terms - Getting Started memorized.
You have access to a computer that is setup as directed in Linux and CS Systems - Getting Started. In particular you should have Python installed, an sftp program installed (FileZilla or WinSCP recommended), and a terminal program installed (Putty if using Windows, Terminal if using Mac).
You should understand how the following algorithms work, be able to trace through running the algorithm on paper, and understand the time complexity of the algorithm (worst and best-case): linear search, binary search, selection sort. You should understand the basics of asymptotic running time notation and concepts. An understanding at the level covered at [TutorialsPoint](https://www.tutorialspoint.com/data_structures_algorithms/index.htm) is all that is required (and note that you only need to know these particular topics, not everything from the TutorialsPoint link).
Note that the following example quiz contains questions from most, but not all, of the topics listed above.
Assessment of Prior Learning
For those who have the skills and knowledge from the course but have not taken the course, it may be possible to be evaluated, pay a reduced tuition amount, and get credit for the course. This would be done through a challenge exam. See this form - https://www.indstate.edu/sites/default/files/media/documents/pdf/assessment-prior-learning-testing.pdf