Skip navigation.

Contact Us

Department of Computer Science

Janssen Engineering
Room 236
PO Box 441010
Moscow, Idaho
83844-1010

phone: 208-885-6592
fax: 208-885-9052

e-mail:
dept chair
graduate info
undergrad info
sys admin
webmaster

CS Department Banner Graphic

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)