COMPUTER SCIENCE DEPARTMENT
 
Freshmen Curriculum
We recommend that the high school seniors take theAdvanced Placement Program for Computer Science.
COSC 1336 Principles of Computer Science I

Course Description

Introduces the fundamental concepts of structured programming. Topics include software development methodology, data typed, control structures, functions, arrays, and the mechanics of running, testing and debugging. This course assumes computer literacy.

COSC 1336 Topics

1. Basic hardware components 37. Static modifier
2. Software components 38. Keyboard input
3. Digital computers 39. Nested classes
4. Network connections 40. Interfaces
5. Internet 41. Arrays
6. World Wide Web 42. Arrays of objects
7. Problem Solving Techniques 43. Sorting
8. Java Program Structure 44. Two-dimensional arrays
9. Identifiers and Reserved Words 45. Inheritance
10. Comments 46. Subclasses and Superclasses
11. Compiler and Interpreters 47. Overriding methods
12. Objects and Classes 48. Indirect use of class members
13. String Literals 49. Polymorphism
14. Variable 50. Mouse Events
15. Primitive Data Types 51. Exceptions
16. Expressions and Assignments 52. Input/Output Streams
17. Arithmetic Expressions 53. Text Files
18. Class Behaviour 54. Files and Graphical uses Interfaces
19. Invocation of Class methods 55. Standard I/O
20. Output 56. Layout Managers
21. Applets 57. Containers
22. Graphic Class 58. Scroll pane
23. If Statement 59. Lists and sliders
24. Switch Statement 60. Recursion
25. Boolean Expressions
26. Assignment and Conditional Operators
27. While Statement
28. Other loop control Statements
29. UML Diagramed
30. Return Statement
31. Parameters and Constructors
32. Method Overloading
33. Association
34. Aggregation
35. Applet methods
36. Reference

COSC 1337 Principles of Computer Science II

Course Description

Continuation of COSC 1373. Further explanation into object-oriented design and problem-solving techniques using the advanced features of C++. An introduction to the UNIX operating system is included.

COSC 1337 Topics - C++ and UNIX

C++ Topics

  1. Multidimensional arrays
  2. String Processing
  3. File processing
  4. Debugging Techniques
  5. Recursion
  6. Friend functions
  7. Inheritance
  8. The copy constructor; shallow and deep copying
  9. Operator overloading
  10. Virtual functions and polymorphism; abstract base classes
  11. Templates and generic classes/functions
  12. Exception handling, stream I/O
  13. Pointers and References
  14. Stacks, queues, dynamic variables, and linked lists

UNIX Component

  1. Brief history in an overview of UNIX, AT&T System V, BSD
  2. Logging in and out; csh; simple commands; intro to the UNIX directory structure; Pine email utility
  3. vi editor; command and text input modes; the memory buffer; exit (w/wo saving file)
  4. More csh commands; script, ls, cd, cp, mv, rm, cat, more, lpr, mkdir, etc; protection modes; using email
  5. Using the buffers in vi; cut and paste; moving around in vi; exrc
  6. I/O redirection; pipes; simple filters (grep and sort); filename substitution
  7. Find command; head, tail, wc, echo, make, tar, ar, shell and environment variables; simple shell programming; login, cshrc, profile; alias, and chmod
  8. Command line parameters in C++; argc, argv; exit
  9. Optional: Remote commands telnet and ftp; who, and finger

COSC 2336 Data Structures and Algorithm Analysis

Course Description

Data structures including several varieties of lists, trees, and graphs, as well as the design and analysis of algorithms that operate on these structures. Searching and sorting techniques including an analysis of these algorithms.

COSC 2336 Topics

I. Linear Structures
A. Stack
B. Queue
C. Single Linked Lists
D. Double Linked Lists

II. Implementation schemes for data structures
A. Language Primitive (Show variations among languages)
1. Integer
2. Real
3. String
4. Set
5. Record or Aggregate
6. Array
7. Others (stack, list, boolean, complex, etc.)
B. Static with implicit or nonexistent pointers
C. Dynamic with explicit pointers
D. Static with explicit pointers

III. Non-Linear Structures
A. Multi-linked lists
B. Binary tree
1. Recursion, its advantages, disadvantages, and alternatives
2. Traversals
3. Binary search tree
4. Expression tree
5. Heap
C. m-ary tree
D. m-ary tree implemented as a binary tree
E. Height balanced binary tree (AVL)
F. B tree, B+ tree
G. Game playing programs, game trees, min-max, alpha-beta pruning (if time permits)
H. Graphs
1. Directed
2. Undirected
3. Implementations
a. Connectivity matrix
b. Weighted connectivity matrix

IV. Internal Sorting
A. Bubble, selection, insertion, or another of the same complexity
B. BST sort
C. Heapsort
D. Quicksort with variations
E. Bin and radix sorting techniques
F. Mergesort
G. Shellsort (if time permits)

V. External Sorting
A. Merging sorted files
B. External merge sort

VI. Introduction to Algorithm Analysis (for the purpose of evaluating the sorting and other algorithms).
A. Worst case
B. Best case
C. Average case

VII. Searching
A. Linear search (review)
B. Binary search (review)
C. Binary search tree
D. Hashing and symbol tables
1. Open or bucket hashing
2. Closed hashing (linear quotient)
E. Optional Binary Search Tree

VIII. Specific Examples of Related Problems
A. Parsing simple expressions producing expression trees
B. Evaluating postfix expressions using a stack
C. Game trees (perhaps with alpha-beta pruning)
D. Traveling salesman heuristics
E. Graph algorithms such as Dijkstra's Algorithm, Breadth First Tree, Depth First Tree Huffman Code

IX. Algorithmic Techniques (If time permits)
A. Greedy (Minimum Spanning Tree)
B. Divide and conquer (Mergesort, Quicksort)
C. Exhaustive search (Traveling Salesman)
D. Backtracking (Eight Queens)
E. Dynamic programming (Optimal BST, Dijkstra's Algorithm)

X. Notes

A. The above is a logical grouping of the material, and does not coincide with the order in which the material is taught.
B. The concept of a heap can be saved until the heapsort is discussed.
C. The binary search tree sort can easily be used as an example use of trees before the other sorts are discussed.
D. The algorithm analysis material is covered as needed while discussing algorithms.
E. As recursion techniques are particularly useful for tree algorithms, recursion is primarily discussed in conjunction with trees. At this time, some of the possible applications of recursion to linear structures are discussed.
F. Program assignments are designed to implement at least: sll and/or dll, stack and/or queue, binary tree, recursion, and the use of a heap
G. At least one order(n squared) sort will be implemented, as well as a version of the quicksort, and a version of the heapsort.


© 2006-2008 Computer Science Department - Lamar University
A Member of The Texas State University System