CS 202 Computer Science II

From Computer Science at Indiana State University
Revision as of 13:22, 17 August 2025 by Jkinne (talk | contribs) (1 revision imported)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Catalog Description

This course is a continuation of CS 201. It involves a deeper study of programming languages, but emphasizes programming in a particular language. Topics include algorithm design and analysis, data structures, recursion, threads, network programming, graphics, security, and ethics. Prerequisites - C or better in CS 201.

Prerequisites

  • basic programming concepts
  • ability to use unix

Standard Content

Course Outline

  • Review (2 weeks)
    • C Programming - all keywords and operations, libraries and header files
    • Data formats and number systems (binary, decimal, octal, hex), signed/unsigned, two’s complement, floating point, long, int, short char, C strings
    • I/O with different data formats and number systems
    • Basic data structures - unsorted array, sorted array, linked list, heap, stack, queue - code for all in class and as assignments
    • Search and sorting - linear and binary search, selection and insertion sort, mergesort, heapsort, quicksort - code for all in class and as assignments
  • Asymptotic analysis and running time (1 week) - big O/Omega/Theta, little o/omega, definitions, basic proofs, polynomials / exponentials / logarithms, recursion trees
  • Memory organization (1 week) - text, data, heap, stack, malloc, free, pointer arithmetic
  • Unix and debugging (1 week) - gdb, grep, sed, awk, find, compiler options, makefiles, unix regular expressions, reading manual and manual organization, pipes, I/O redirection
  • Disk organization (1 week) - inodes, superblocks, etc.
  • New data structures (4 weeks) - binary search tree (including balanced), hash table, skip list, trie, B tree - code for some in class and as assignments
  • Graphs (1 week) - terminology, adjacency matrix, adjacency list, basic algorithms (BFS, DFS, shortest path, minimum spanning tree) - do all algorithms on the board, code for some in class, running time for all
  • Classes and objects in C++ (2 weeks) - data abstraction and encapsulation, defining classes, creating objects, inheritance, protection, virtual functions and polymorphism
  • The Standard Template Library (1 week)
  • Comparison of C++ and other OO Languages (Java, Python, etc.) (1 week)

Learning Outcomes

  • C programming and debugging,
  • data structures understanding (can explain lookup/insert/delete for each DS, work small examples on paper, know running times) and
  • coding (can finish partially complete DS code, write new functions to traverse DS)


Important Assignments and/or Exam Questions

  • Programming assessment - must pass with 3 and 2 halves to get a C or better
  • Data structures programming, exam/homework question - given prototype for insert/lookup/delete, can give correct code
  • Data structures programming, exam/homework question - given prototype for function that should use data structure functions, can give correct code
  • C programming play computer, exam question - given any short C program (a few dozen lines, say) and sample input, can trace execution and final output
  • Some large project that is interesting - game, etc.

Standard resources

  • Introduction to Algorithms by Cormen, Leiserson, Rivest, and Stein
  • The C Programming Language by Kernighan and Ritchie
  • Online courses/tutorials - MIT course - Practical Programming in C , How to Think Like a Computer Scientist, C++ Version - an online textbook, CS 50: Intro to CS I at Harvard - has videos, lecture notes, Reference on C and C++, The C Programming Language, C Programming Tutorial, Fresh2fresh C Tutorial