CS 120 Computer Science I
Total Credits: 4 cr
Course Coordinator: Bruce Bolden
URL:
http://www2.cs.uidaho.edu/~tsoule/CS120/cs120.html
Current Catalog Description: Fundamental programming constructs, algorithms,
and problem solving, fundamental data structures, overview of programming languages,
virtual machines, introduction to language translation, declarations and types,
abstraction mechanisms, object-oriented programming. Three lectures and one
2-hr lab a week. Prereq: Math 108 or sufficiently high ACT, SAT, or Math Placement
Test score to qualify for Math 143.
Textbook: Timothy B. D'Orazio, Programming in C++: Lessons and Applications,
McGraw Hill or equivalent text.
References: None.
Course Goals: Teach the problem solving skills associated with programming,
including top-down design, problem decomposition, algorithm analysis, program
design and testing. Working knowledge of C++, including classes and objects.
After taking this course a student should be able to take a description of a
problem that has a straightforward computing solution and systematically solve
the problem, including the implementation of the solution and testing the final
program.
Prerequisites by Topic: Basic algebra skills.
Major Topics Covered in the Course:(duration) (CC 2001 BOK reference)
- Intro to computers and programming (1 hour) (PF1)
- Basic program structure, variables, I/O (2 hours) (PF1)
- Types?internal representation, base conversion (2 hours) (AR2)
- Arithmetic expressions, operators, computer arithmetic (2 hours) (PF1)
- Relational operators, conditional statements (if, switch) (3 hours)
(PF1)
- Iteration, looping, loop techniques (4 hours) (PF1)
- Functions, parameter passing, return values (3 hours) (PF1)
- Files, file I/O (2 hours) (PF3)
- Arrays, 1-D, multidimensional (3 hours) (PF1)
- Character strings (C-style and C++ string class ) (2 hours) (PF3)
- Classes (4 hours) (PL5, PL6)
- Social and Ethical Issues (2 hours) (SP2)
- Pointers with Arrays, dynamic memory (4 hours) ( PF3)
- Recursion (3 hours) (PL5)
Laboratory projects (specify number of weeks on each): The course
includes a semester-long laboratory activity comprised of 12 to 13 lab exercises
and 12 -13 homework assignments that are programming projects. Lab topics include:
- Introduction to Unix, use of editor and compiler to create a simple
program (1 week)
- Arithmetic computations, type casting (1 week)
- Conditionals: if and switch (1 week)
- Loops (1 week)
- Functions (2 weeks)
- Input a file, perform some decisions/calculations (1 week)
- Arrays (1 week)
- 2-D Arrays-game board (1 week)
- Files (1 week)
- Recursion (1 week)
- Classes (2 weeks)
- Pointers ? build a linked list (1 week)
- Pointers ? manipulate the linked list (1 week)
Estimated Curriculum Category Content:
| Area |
Core |
Advanced |
Area |
Core |
Advanced |
| Algorithms |
1 cr |
|
Data Structures |
1 cr |
|
| Software Design |
1 cr |
|
Prog. Languages |
1 cr |
|
| Computer Arch |
|
|
Other |
|
|
Oral and Written Communications: The students in the course are not
required to submit written reports.
Social and Ethical Issues: Social and ethical importance of computing
? why coding is a serious endeavor. Graded via test questions (2 hours).
Theoretical Content:
- Algorithm Complexity (2 hours)
Problem Analysis:
- Program testing (3 hours)
- Algorithm creation (2 hours)
- Complexity analysis (2 hours)
Solution Design:
- Techniques for top-down, decompositional design (2 hours)
- Techniques for bottom-up design (1 hours)
- Team-based design (2 hours)
Course Outcomes: The following list documents the course outcomes
and crossreferences them to the BSCS program
outcomes. The letter at the beginning of each reference identifies the program
outcome supported. The numbers sequentially identify the course outcome for
this course. After completing CS 120 a student should be able to:
- Take a description of a problem that has a straight forward computing
solution, design, construct, and test a complete program that solves the
problem. (c-1)
- Work in a small group to solve a relatively simple computing problem.
(d-1)
- Understand the potential consequences of program failure. (e-1)
- Understand the expectations for academic integrity as they apply to
software development. (e-2)
- Students will be able to document computer solutions to problems with
well written reports in a standard format that emphasizes insight into the
problem solving, not just the presentation of the output. (f-1)
- Use a C++ compiler. (i-1)
- Use basic system tools (e.g., top and time) to analyze a program's behavior
with respect to the use of computer memory and CPU time. (i-2)
- Use code libraries. (i-3)
- Define C++ constants and variables of type char, int, float, and double.
They will know the different characteristics of these data types and when
each type should be used. (j-1)
- Understand how to use type casting and how the compiler converts between
types in mathematical / logical expressions. (j-2)
- Create correctly formatted C++ expressions using the following operators:
+, -, *, /, %, (), and [ ]. (j-3)
- Build programs units consisting of the sequence, selection, and repetition
programming structures of C++. More specifically they will be able to determine
under what conditions each of the following structures should be used:
Sequence: assignment statement.
Selection: if, if-else, if-else if-else if-else, and switch structures.
Repetition: for, while, and do-while structures. (j-4)
- Read / write information from / to files. (j-5)
- Create and call functions having arguments and return values. They will
know when arguments should be passed by value or reference. (j-6)
- Use and manipulate one and two dimensional arrays. (j-7)
- Use and understand the use of recursion. (j-8)
- Understand how to allocate memory dynamically using arrays and pointers.
(j-9)
- Use and manipulate singly-linked lists using pointers. (j-10)
- Create simple classes having data members and member functions. They
will be able to read class header files and be able to call object member
functions defined in the header files. (j-11)