CSCI 136

Fundamentals of Computer Science II

3 Cr. (Hrs.:2 Lec., 3 Lab)

A continuation of CSCI 135, this class explores the finer and more subtle elements of programming. Programming techniques and structures will include recursion, linked lists, stacks and queues, threading and socket communication. In the second part of the semester, students will be introduced to an additional operating system and an additional programming language. Prerequisite: CSCI 135 (2nd)


E1. Students should have basic problem solving skills and be able to apply those skills to create an algorithmic solution for a given programming problem. (CSCI 135)

E2. Students should be able to create programs using assignments, control constructs, and routines and be able to find and correct any syntax errors to produce a running executable. (CSCI 135)

E3. Students should be able to test their programs, find any logic errors, and correct these flaws to produce a working program.(CSCI 135)

Course Outcomes:

R1. Students are proficient in a programming language and know basic error-handling, testing and debugging techniques. (CS: 2, 6)

R2. Students use advanced programming techniques, including recursion, file I/O, abstraction, multi-file programs, and programming language libraries. (CS: 2, 6)

R3. Students use and implement simple data structures, including stacks, queues and linked lists. (CS: 2, 6)

R4. Students use basic object-oriented programming methodologies including object-oriented problem decomposition, class design/implementation, and object creation/usage. (CS: 1, 2, 6; SE: 2)

R5. Students write defensive programs with an emphasis on the responsibilities that computer professionals have for ensuring software quality. (CS: 1, 2, 6; SE: 2)

R6. Students understand and implement multi-threaded solutions to achieve provably correct synchronization among threads operating on shared resources. (CS: 2, 6; SE 2)

R7. Students integrate third party applications into their projects through socket connection/communications protocol, method API's, and command line interfaces. (CS: 2, 6)

R8. Students implement client-server architectures which communicate over the Web using TCP and the sockets interface. (CS: 2, 6)

R9. Students use an additional programming language and operating system to implement components of the previous concepts. (CS: 2, 6; SE 7)

5-2-1 - Techniques, skills, and tools necessary for computing practice
5-a-2 - Substantial coverage of at least one general-purpose programming language
5-a-4 - The study of computing-based systems at varying levels of abstraction

III-1-2-1 - Computing fundamentals, software design and construction, requirements analysis, security, verification, and validation