<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="school.xsl" ?>

<courses>

##############################################################
<course>
  <usnewsrank>5</usnewsrank>
  <university>University of Pennsylvania</university>
  <name>Programming Languages and Techniques II</name>
  <number>CSE 121/131</number>
  <url>http://www.seas.upenn.edu:8080/~cse121/home.html</url>
  <language>Java</language>
  <level>3</level>
  <syllabus>?</syllabus>

  <books>
  <book>
     <author>Goodrich and Tamassia</author>
     <title>Data Structures and Algorithms in Java</title>
  </book>
  <book>
     <author>Savitch</author>
     <title>Java: An Introduction to Computer Science and Programming</title>
  </book>
  <book>
     <author>Arnold and Gosling</author>
     <title>The Java Programming Language</title>
  </book>
  </books>

  <assignment>
     <name>none</name>
     <number>6</number>
     <keywords>priority queue</keywords>
     <description>Students must complete the code for removeMinElement from a binary heap.</description>
     <url>http://www.seas.upenn.edu:8080/~cse121/homework/hw6/hw6/hw6.pdf</url>
  </assignment>

  <description>
Introduction to fundamental concepts of computer science. Principles of programming languages: abstraction, types, polymorphism, encapsulation, and inheritance. Basic algorithmic techniques and informal complexity analysis. Substantial programming assignments in two high-level programming languages, ML and Java (see also CSE 130).
  </description>

  <comment>
Saw no mention of ML on the course page, also no syllabus.
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>13</usnewsrank>
  <university>Brown</university>
  <name>Introduction to Algorithms and Data Structures</name>
  <number>CS16</number>
  <url>http://www.cs.brown.edu/courses/cs016/</url>
  <language>Java</language>
  <level>3</level>
  <syllabus>http://www.cs.brown.edu/courses/cs016/info/syllabus.shtml</syllabus>

  <books>
  <book>
   <author>Goodrich and Tamassia</author>
   <title>Data Structures and Algorithms in Java</title>
  </book>
  </books>

  <assignment>
     <name>?</name>
     <number>5</number>
     <keywords>?</keywords>
     <description>?</description>
     <url>?</url>
  </assignment>

  <description>
Introduces fundamental techniques for problem solving by computer that are relevant to most areas of computer science, both theoretical and applied.  Algorithms and data structures for sorting, searching, graph problems, and geometric problems are covered. Programming assignments conform with the object-oriented methodology introduced in CS 15. Computer graphics animations are used to visualize algorithms and their performance.
  </description>

  <comment>
The most overly-secured course website I have ever seen.  Finding information is like pulling teeth.
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>22</usnewsrank>
  <university>Carnegie Mellon</university>
  <name>Object-Based Programming III</name>
  <number>15-113</number>
  <url>http://www.cs.cmu.edu/~adamchik/15-113/index.html</url>
  <language>C++</language>   
  <level>3</level>
  <syllabus>http://www.cs.cmu.edu/~adamchik/15-113/syllabus.html</syllabus>

  <books>
  <book>
     <author>Weiss</author>
     <title>Data Structures and Problem Solving Using C++</title>
  </book>
  </books>

  <assignment>
     <name>A Linked Implementation of a Priority Queue</name>
     <number>3</number>
     <keywords>priority queue, sorting, linked list</keywords>
     <description>Implementing a priority queue of integers with a sorted linked list</description>
     <url>http://www.cs.cmu.edu/~adamchik/15-113/labs/lab03.html</url>
  </assignment>

  <description>
This course assumes a significant amount of prior programming experience in C++ and deals with using and implementing software components in the construction of programs. Topics to be covered include classes and advanced object-based programming techniques, dynamically allocated data structures (including linked lists, stacks, queues, trees, heaps, and graphs), simple analysis of the algorithms that operate on those data structures, and templates (the STL). 
  </description>

  <comment>
Semester starts late so middle program occusrs in November.
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>30</usnewsrank>
  <university>Brandeis</university>
  <name>Data Structures and the Fundamentals of Computing</name>
  <number>CS21a/22a</number>
  <url>http://www.cs.brandeis.edu/~cs21a/</url>
  <language>Java, C</language>
  <level>3</level>
  <syllabus>?</syllabus>

  <books>
  <book>
     <author>Shaffer</author>
     <title>A Practical Introduction to Data Structures and Algorithm Analysis (Java Edition)</title>
  </book>
  </books>

  <assignment>
     <name>none</name>
     <number>5</number>
     <keywords>heap, priority queue, binary search tree, linked list</keywords>
     <description>Implement ADT Priority Queue as a Heap.  Implement ADT Binary Search Tree using linked nodes.</description>
     <url>http://www.cs.brandeis.edu/~cs21a/assignments.html</url>
  </assignment>

  <description>
An introduction to the fundamental concepts of computation: discrete structures (sets, relations, functions, sequences, graphs), the fundamental data structures and algorithms for sorting and searching (lists, queues, dequeues, heaps, hashing, binary trees, tries), and the analysis of algorithms (predicate logic, termination and correctness proofs, computational complexity). 
  </description>

  <comment>
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>38</usnewsrank>
  <university>Case Western Reserve</university>
  <name>Intro to Data Structures (with Professor Lee White)</name>
  <number>EECS233</number>
  <url>http://www.eecs.cwru.edu/courses/eces233/</url>
  <language>C++</language>
  <level>3</level>
  <syllabus>http://www.eecs.cwru.edu/courses/eces233/syllabus.html</syllabus>

  <books>
  <book>
     <author>Main and Savitch</author>
     <title>Data Structures and Other Objects Using C++</title>
  </book>
  </books>

  <assignment>
     <name>none</name>
     <number>3</number>
     <keywords>infix, postfix, prefix, file input</keywords>
     <description>write a calculator that solves a prefix problem and can translate to infix and postfix</description>
     <url>http://www.eecs.cwru.edu/courses/eces233/prog3.htm</url>
  </assignment>

  <description>
The programming language C++; pointers, files, variant records, and recursion. Representation and manipulation of data: one-way and circular linked lists, doubly linked lists; the available space list. Different representations of stacks and queues. Representation of binary trees, trees and graphs. Hashing; searching and sorting. Laboratory. The course begins with a discussion of pointers and dynamic structures, as most students have had little or no experience with these data structures or their implementation in C++ from an earlier programming course. A number of other data structure topics from C++ are discussed both conceptually and in terms of their implementation in C++, including: abstract data types, classes, containers, templates, recursion, inheritance and derived classes. Students are asked to write programs utilizing these concepts. Another theme of the course is the utilization of the proper data structure and algorithm for greatest efficiency, usually measured by running time of the program. This is emphasized in class, on homework assignments, in programming assignments and on examinations.
  </description>

  <comment>
This course is pretty much CS1 and CS2 rolled together.
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>46</usnewsrank>
  <university>Washington</university>
  <name>Data Structures</name>
  <number>CSE 326</number>
  <url>http://www.cs.washington.edu/education/courses/326/00au/</url>
  <language>C++</language>
  <level>3</level>
  <syllabus>http://www.cs.washington.edu/education/courses/326/00au/lectures/index.htm</syllabus>

  <books>
  <book>
     <author>Weiss</author>
     <title>Data Structures and Algorithm Analysis in C++</title>
  </book>
  </books>

  <assignment>
     <name>none</name>
     <number>3</number>
     <keywords>graphs</keywords>
     <description>explore graphs through the context of a text-based virtual world, using breadth-first searching</description>
     <url>http://www.cs.washington.edu/education/courses/326/00au/homework/homework3.txtl</url>
  </assignment>

  <description>
Data types, abstract data types, and data structures. Efficiency of algorithms. Sequential and linked implementation of lists. Binary tree representations and traversals. Searching: dictionaries, priority queues, hashing. Directed graphs, depth-first algorithms. Garbage collection. Dynamic storage allocation. Internal and external sorting
  </description>

  <comment>
There is a choice between CSE 143 and 326 for the CS2 course.  I believe that 326 is a closer match though it closely resembles our own CPS130 in many respects.
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>51</usnewsrank>
  <university>Boston University</university>
  <name>Introduction to CS II</name>
  <number>CS112</number>
  <url>http://cs-people.bu.edu/metcalf/cs112/</url>
  <language>C++, C</language>    
  <level>3</level>
  <syllabus>http://cs-people.bu.edu/metcalf/cs112/syllabus.html</syllabus>

  <books>
  <book>
     <author>Main and Savitch</author>
     <title>Data Structures and Other Objects Using C++</title>
  </book>
  <book>
   <author>Standish</author>
   <title>Data Structures, Algorithms and Software Principles in C</title>
  </book>
  </books>

  <assignment>
     <name>none</name>
     <number>4</number>
     <keywords>GCD, recursion, queue</keywords>
     <description>Implement Euclid's Algorithm for computing GCD.  Write a recursive queue reversal program</description>
     <url>http://cs-people.bu.edu/metcalf/cs112/hw4.html</url>
  </assignment>

  <description>
This course teaches programming style and advanced methods, using the C++ programming language. We will learn software engineering techniques that allow us to design, implement and analyze algorithms in a clear and modular manner. We survey advanced data structures and the algorithms which support them. 
  </description>

  <comment>
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>51</usnewsrank>
  <university>Fordham</university>
  <name>Data Structures</name>
  <number>CSRU 2200</number>
  <url>http://www.cis.fordham.edu/rh_descrip.html</url>
  <language>?</language>
  <level>2.5</level>
  <syllabus>?</syllabus>

  <books>
  <book>
     <author>?</author>
     <title>?</title>
  </book>
  </books>

  <assignment>
     <name>?</name>
     <number>?</number>
     <keywords>?</keywords>
     <description>?</description>
     <url>?</url>
  </assignment>

  <description>
A survey and analysis of the major types of structure in programs that handle data. Arrays, stacks, queues, linked lists, trees, and graphs; recursive, iterative, search and sort techniques. Methods of organizing and manipulating files will be referenced.
  </description>

  <comment>
The link to the teacher's homepage was broken and everything else I tried was a dead end.
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>7</usnewsrank>
  <university>Haverford</university>
  <name>Introduction to Data Structures</name>
  <number>206</number>
  <url>http://triluminary.cs.haverford.edu/courses/CMSC206.html</url>
  <language>C++</language>
  <level>3</level>
  <syllabus>http://triluminary.cs.haverford.edu/courses/CMSC206/Syllabus.html</syllabus>

  <books>
  <book>
     <author>Sedgewick</author>
     <title>Algorithms in C++</title>
  </book>
  </books>

  <assignment>
     <name>Linked List Memory Management</name>
     <number>6</number>
     <keywords>linked list, vector, memory, shared data, big O notation</keywords>
     <description>Create a class "list_big" class using the technique of representing all lists with 
a shared vector of value/next pairs (each list then indicates it's own starting position in this 
vector). This class, like the one from Lab 5, only needs to provide lists of integers. Also include a
"remove" operation that removes the ith element of a list. You will need to include a "copy 
constructor" and assignment operation, and you should provide a test program to show that lists 
do not share data. Give the O() approximation for the worst-case asymptotic time
complexity of each operation.</description>
     <url>http://triluminary.cs.haverford.edu/courses/CMSC206/lab6.html</url>
  </assignment>

  <description>
An introduction to the fundamental data structures of computer science: strings, lists, trees, 
graphs, sets and their accompanying algorithms. Principles of algorithmic analysis and design will 
be introduced using mathematical techniques for the notions of both complexity and correctness. 
Some practical issues, such as memory management and hashing, will also be covered. The
programming language used to illustrate and implement these concepts will be C++, and 
emphasis will be placed on the use of recursion.</description>

  <comment>
Second course for majors. Related to CMSC206 at Bryn Mawr.
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>15</usnewsrank>
  <university>Bryn Mawr</university>
  <name>Data Structures</name>
  <number>206</number>
  <url>http://mainline.brynmawr.edu/~rmercuri/CS206syl.html</url>
  <language>C++</language>
  <level>3</level>
  <syllabus>http://mainline.brynmawr.edu/~rmercuri/CS206syl.html</syllabus>

  <books>
  <book>
     <author>Budd</author>
     <title>Data Structures in C++ using the Standard Template Library</title>
  </book>
  </books>

  <assignment>
     <name>Linked List (Fall 99)</name>
     <number>4</number>
     <keywords>linked list</keywords>
     <description>Implement the basic List operations to use the Linked representation as 
discussed in class.</description>
     <url>http://mainline.brynmawr.edu/Courses/cs206/fall99/#Assignments</url>
  </assignment>

  <description>
Introduction to the fundamentals of structuring and manipulating data: sorting, searching, recursion, lists, stacks, queues, trees, graphs, tables.  Introduction to the analysis of algorithms.  Advancement in C++ skills and techniques.
  </description>

  <comment>
Second course for majors. Could only find vague information on assignments (Fall 1999).
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>15</usnewsrank>
  <university>Trinity</university>
  <name>Program and Design and Structured Problem Solving</name>
  <number>2</number>
  <url>http://www.cs.tcd.ie/courses/bsccs/sfbsc.html#CS2</url>
  <language>C++, Java</language>
  <level>3</level>
  <syllabus>http://www.cs.tcd.ie/courses/bsccs/sfbsc.html#CS2</syllabus>

  <books>
  <book>
     <author>?</author>
     <title>?</title>
  </book>
  </books>

  <assignment>
     <name>Christmas project: Snowflake generation</name>
     <number>?</number>
     <keywords>?</keywords>
     <description>Generate snowflake graphics by rotation</description>
     <url>http://www.cs.tcd.ie/Fergal.Shevlin/courses/cs2/C++/ch-proj99.pdf</url>
  </assignment>

  <description>
  </description>

  <comment>
      Second course for majors. (Not much information online).
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>31</usnewsrank>
  <university>Kenyon</university>
  <name>Data Structures and Program Design</name>
  <number> MATH28</number>
  <url>http://math.kenyon.edu/~m28s00/</url>
  <language>Java</language>
  <level>3</level>
  <syllabus>http://math.kenyon.edu/~m28s00/syllabus/</syllabus>

  <books>
  <book>
     <author>Rowe</author>
     <title>An Introduction to Data Structures and Algorithms with Java</title>
  </book>
  </books>

  <assignment>
     <name>Checkers (Spring 2000)</name>
     <number>1</number>
     <keywords>checkers, applet</keywords>
     <description>Write (or finish writing) an applet which allows two people to play a game of checkers.</description>
     <url>http://math.kenyon.edu/~m28s00/projects/project-1/</url>
  </assignment>

  <description>
This course is intended as a second course in programming, as well as an 
introduction to the concept of computational complexity and the major abstract data structures 
(such as arrays, stacks, queues, link lists, graphs, and trees), their implementation and 
application, and the role they play in  the design of efficient algorithms. Students will be required
 to write several programs using a high-level language.
  </description>

  <comment>
Second course for majors.
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>39</usnewsrank>
  <university>DePauw</university>
  <name>Computer Science II</name>
  <number>122</number>
  <url>?</url>
  <language>Java</language>
  <level>1</level>
  <syllabus>?</syllabus>

  <books>
  <book>
     <author>?</author>
     <title>?</title>
  </book>
  </books>

  <assignment>
     <name>?</name>
     <number>?</number>
     <keywords>?</keywords>
     <description>?</description>
     <url>?</url>
  </assignment>

  <description>
This course builds on CSC 121 and introduces programming topics such as: sets, 
recursion and dynamic data types. Data type abstraction and implementation are introduced by 
studying structures such as lists, stacks, queues and binary trees. The object-oriented 
implementation of these structures is emphasized. Tools for algorithm analysis are introduced 
and comparisons of functional, object oriented and imperative programming paradigms are made. 
The concept of tradeoffs, i.e., time vs. space, iteration vs. recursion, static vs. dynamic, and 
imperative vs. functional, recurs as a theme throughout the course.
  </description>

  <comment>
      Second course for majors. No course website!
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>47</usnewsrank>
  <university>Dickinson</university>
  <name>Introduction To Computing II</name>
  <number>132</number>
  <url>http://omega.dickinson.edu/~braught/courses/cs132f00/cs132f00.html</url>
  <language>Java</language>
  <level>1</level>
  <syllabus>http://omega.dickinson.edu/~braught/courses/cs132f00/syllabus.html</syllabus>

  <books>
  <book>
     <author>Pohl and McDowell</author>
     <title>Java By Dissection: The Essentials of Java</title>
  </book>
  </books>

  <assignment>
     <name>MineSweeper</name>
     <number>?</number>
     <keywords>array, matrix</keywords>
     <description>Write a method static int numAdjMines(int[][] mineBoard, int row, int col)
   that will return the number of mines that are adjacent to the cell row, col on the mineBoard. Be 
careful not to use negative row or column indices! </description>
     <url>http://omega.dickinson.edu/~braught/courses/cs132f00/classes/class17c.html</url>
  </assignment>

  <description>
  </description>

  <comment>
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>7</usnewsrank>
  <university>Duke</university>
  <name>Program Design and Analysis II</name>
  <number>CPS100</number>
  <url>http://www.cs.duke.edu/courses/fall00/cps100</url>
  <language>C++</language>
  <level>3</level>
  <syllabus>http://www.cs.duke.edu/education/courses/fall00/cps100/syllabus.html</syllabus>

  <books>
  <book>
     <author>Astrachan</author>
     <title>A Computer Science Tapestry</title>
  </book>
  <book>
   <author>Sedgewick</author>
   <title>Algorithms in C</title>
  </book>
  </books>

  <assignment>
     <name>Tag Validator</name>
     <number>3</number>
     <keywords>stack, html, inheritance</keywords>
     <description>validate tags on a web page</description>
     <url>http://www.cs.duke.edu/education/courses/fall00/cps100/assign/tags/</url>
  </assignment>

  <description>
A continuation of Computer Science 6. Overview of advanced data structures and analysis of 
algorithms, data abstraction and abstract data types, object-oriented programming, proofs of 
correctness, complexity, and computability.
  </description>

  <comment>
Second course for majors
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>23</usnewsrank>
  <university>Georgetown</university>
  <name>Computer Science II</name>
  <number>072</number>
  <url>http://www.cosc.georgetown.edu/~mahe/072/072.html</url>
  <language>C++, Java</language>
  <level>2</level>
  <syllabus>http://www.cosc.georgetown.edu/~mahe/072/072.html</syllabus>

  <books>
  <book>
     <author>Deitel and Deitel</author>
     <title>C++ How to Program</title>
  </book>
  <book>
     <author>Deitel and Deitel</author>
     <title>Java How to Program</title>
  </book>
  </books>

  <assignment>
     <name>Palindrome</name>
     <number>7</number>
     <keywords>stack, queue, inheritance</keywords>
     <description>Write a program to determine if a string is a palindrome.</description>
     <url>http://www.cosc.georgetown.edu/~mahe/072/proj7.html</url>
  </assignment>

  <description>
This course continues the development of the program design principle begun in 071. The 
objective of the course is to develop a mastery of object-oriented programming using the C++ and 
Java languages. Topics covered include inheritance, polymorphism, files, exception handling, 
recursion, and elementary data structures including linked lists and trees. Java programming 
component will include graphical user interfaces (GUIs), threads, graphics, servlets, RMI, 
networking and files. Professor Velauthapillai
</description>

  <comment>
Second course for majors
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>31</usnewsrank>
  <university>University of California San Diego</university>
  <name>Basic Data Structures and Object--oriented Programming</name>
  <number>CSE 12</number>
  <url>http://sunpal.ucsd.edu/~cs12x/</url>
  <language>Java, C</language>
  <level>3</level>
  <syllabus>http://sunpal.ucsd.edu/~cs12x/schedule.txt</syllabus>

  <books>
  <book>
     <author>Standish</author>
     <title>Data Structures in Java</title>
  </book>
  <book>
     <author>Roberts</author>
     <title>Programming Abstractions in C</title>
  </book>
  <book>
     <author>Stroustrup</author>
     <title>The C++ Programming Language</title>
  </book>
  <book>
     <author>Flanagan</author>
     <title>Java in a Nutshell</title>
  </book>
  </books>

  <assignment>
     <name>Preliminary Calculator and array based stack</name>
     <number>2</number>
     <keywords>array, stack, calculator, mathematical expressions</keywords>
     <description>Develop a program that will simulate a top-of-the-line calculator that will 
perform such advanced commands as addition, subtractions, multiplication, division, 
exponentiation, and factorial! Given part of the stack.c file, suggestion to begin the calc.c file, 
starting for "driver.c," and main.c</description>
     <url>http://sunpal.ucsd.edu/~cs12x/hw2.txt</url>
  </assignment>

  <description>
Basic data structures including: linked lists, stacks, queues, trees, and hash tables. Basic object-
oriented programming including: classes and abstract data types, inheritance, overloading and 
overriding methods, pointer arithmetic, recursion.
  </description>

  <comment>
Second course for majors
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>39</usnewsrank>
  <university>Lehigh</university>
  <name>Structured Programming and Data Structures</name>
  <number>17</number>
  <url>http://www.lehigh.edu/~ejk0/csc17.html</url>
  <language>Pascal, C++</language>
  <level>2</level>
  <syllabus>http://www.lehigh.edu/~ejk0/syl17pp.pas</syllabus>

  <books>
  <book>
     <author>Deitel and Deitel</author>
     <title>C++ How to Program</title>
  </book>
  <book>
     <author>Cummings</author>
     <title>Turbo Pascal</title>
  </book>
  </books>

  <assignment>
     <name>HanoiTower</name>
     <number>6</number>
     <keywords>abstract data structure, ADT, class design</keywords>
     <description>Develop a class HanoiTower which is an ADT for a single tower of hanoi.</description>
     <url>http://www.lehigh.edu/~ejk0/c17hw6.pas</url>
  </assignment>

  <description>
Algorithmic design and implementation in high level, block-structured, procedure-oriented 
languages. Recursion, lexical programs, pointers, data structures, and their 
applications.
  </description>

  <comment>
Second course for majors
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>47</usnewsrank>
  <university>Yeshiva</university>
  <name>Introduction to Computer Science and Programming II</name>
  <number>1336C</number>
  <url>http://www.yu.edu/yeshivacollege/syllabuses/lebo1336ccom.html</url>
  <language>Java</language>
  <level>1</level>
  <syllabus>http://www.yu.edu/yeshivacollege/syllabuses/lebo1336ccom.html#Syllabus</syllabus>

  <books>
  <book>
     <author>Bishop</author>
     <title> Java Gently</title>
  </book>
  </books>

  <assignment>
     <name>?</name>
     <number>?</number>
     <keywords>?</keywords>
     <description>?</description>
     <url>?</url>
  </assignment>

  <description>
Principles of good programming style, expression, and documentation; control flow; invariant 
relation of a loop; stepwise refinement of statements and data structures or top-down 
programming; string processing; concatenation, substrings, matching; internal searching and 
sorting; recursion; linked lists and linear allocation (stacks, queues, deques). Prerequisite: COMP 
1315C.
  </description>

  <comment>
Second course for majors. Could not find assignments online.
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>1</usnewsrank>
  <university>Swarthmore College</university>
  <name>Algorithms and Object-Oriented Programming </name>
  <number>CS 35</number>
  <url>http://www.cs.swarthmore.edu/~newhall/cs35/cs35.html</url>
  <language>Java</language>
  <level>3</level>
  <syllabus>http://www.cs.swarthmore.edu/~newhall/cs35/cs35.html#schedule</syllabus>

  <books>
  <book>
    <author>Goodrich and Tamassia </author>
    <title>Data Structures and Algorithms in Java </title>
  </book>
  </books>

  <assignment>
   <name>Maze Path Searching </name>
   <number>4</number>
   <keywords>stack, queue</keywords>
   <description>Implement two versions of an algorithm for finding a path through a rectangular maze; one version will use a stack, and the other will use a queue to store state information as the search algorithm proceeds.</description>
   <url>http://www.cs.swarthmore.edu/~newhall/cs35/hw04/hw04.html</url>
  </assignment>

  <description>
You will be learning data structures and algorithms which are important in the construction of sophisticated computer programs. The underlying themes of the course will be program design, abstraction, analysis, and an introduction to object-oriented programming. Techniques to analyze various algorithms and data structures will be presented. 
</description>

  <comment>
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>9</usnewsrank>
  <university>Wesleyan College</university>
  <name>Data Structures</name>
  <number>COMP 212 </number>
  <url>http://dkrizanc.web.wesleyan.edu/courses/212/index.html</url>
  <language>C++</language>
  <level>3</level>
  <syllabus>http://dkrizanc.web.wesleyan.edu/courses/212/index.html</syllabus>

  <books>
  <book>
    <author>Sedgewick</author>
    <title>Algorithms in C++</title>
  </book>
  </books>

  <assignment>
   <name>none</name>
   <number>2</number>
   <keywords>priority queue, array, ordered, unordered, binary, heap, ternary, time, random</keywords>
   <description>Implement priority queue in the following ways: unordered array, ordered array, binary heap, ternary heap. Time the sorting of N elements by inserting random numbers into the p.queue and extracting them in order with a function ExtractMin()</description>
   <url>http://dkrizanc.web.wesleyan.edu/courses/212/prog2/prog2.html</url>
  </assignment>

  <description>
The purpose of this course is to introduce and investigate a variety of important data structures based on the notion of an abstract data type. In particular, the following topics will be discussed: Abstract Data Types, Stacks and Queues, Symbol Tables, Binary Search Trees, Balanced Search Trees, and Hashing.
  </description>

  <comment>  
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>17</usnewsrank>
  <university>Colgate University</university>
  <name>Introduction to Computing II</name>
  <number>COSC 102</number>
  <url>http://149.43.80.141/CsLabWebPages/CS102_Web_Pages/default.htm</url>
  <language>C++</language>
  <level>2</level>
  <syllabus>http://149.43.80.141/CsLabWebPages/CS102_Web_Pages/default.htm</syllabus>

  <books>
  <book>
   <author>Carrano, Helman, and Veroff</author>
   <title>Data Abstraction and Problem Solving with C++ </title>
  </book>
  </books>

  <assignment>
   <name>Implementing Stacks with Linked Lists</name>
   <number>6</number>
   <keywords>stack, linked list</keywords>
   <description>Implementing Stacks with Linked Lists</description>
   <url>http://149.43.80.141/CsLabWebPages/CS102_Web_Pages/Labs/Lab5/Lab5.htm</url>
  </assignment>

  <description>
The focus of the course is the study of data structures and algorithms. It  builds on concepts learned in the first course (COSC 101), and also introduces new concepts and techniques. One goal of the course is to improve upon the programming skills acquired in the introductory course and to learn some new programming constructs. By the end of this course students should feel fairly confident in writing moderately large programs. Some important tools that will be used in order to accomplish this goal are data abstraction and object-oriented programming. These topics will be emphasized throughout the course. In addition, we will study several very useful data structures such as stacks, queues, lists, and trees, and several algorithms for sorting, searching, and accessing data. We will also learn techniques for analyzing and comparing the efficiency of different algorithms.
  </description>

  <comment>
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>25</usnewsrank>
  <university>University of the South</university>
  <name>Data Structures. </name>
  <number>257</number>
  <url>?</url>
  <language>?</language>
  <level>?</level>
  <syllabus>?</syllabus>

  <books>
  <book>
   <author>?</author>
   <title>?</title>
  </book>
  </books>

  <assignment>
   <name>?</name>
   <number>?</number>
   <keywords>?</keywords>
   <description>?</description>
   <url>?</url>
  </assignment>

  <description>
Recursion, data abstraction, algorithm design and analysis, and the implementation of large programs.
  </description>

  <comment>
Nothing other than a short description was given for this course on the Math/Computer Science website.
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>33</usnewsrank>
  <university>Whitman College</university>
  <name>Data Structures with C++</name>
  <number>270</number>
  <url>?</url>
  <language>C++</language>
  <level>2</level>
  <syllabus>?</syllabus>

  <books>
  <book>
   <author>?</author>
   <title>?</title>
  </book>
  </books>

  <assignment>
   <name>?</name>
   <number>?</number>
   <keywords>?</keywords>
   <description>?</description>
   <url>?</url>
  </assignment>

  <description>
We study fundamental methods used to store, access, and manipulate data in computers. Storage structures to be covered include files, lists, tables, graphs, and trees. We will discuss and analyze methods of searching for and sorting data in these structures.
  </description>

  <comment>
Second course for majors
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>41</usnewsrank>
  <university>Centre College</university>
  <name>Intermediate Structured Programming and Data Structures</name>
  <number> CSC 23</number>
  <url>?</url>
  <language>?</language>
  <level>2</level>
  <syllabus>?</syllabus>

  <books>
  <book>
   <author>?</author>
   <title>?</title>
  </book>
  </books>

  <assignment>
   <name>?</name>
   <number>?</number>
   <keywords>?</keywords>
   <description>?</description>
   <url>?</url>
  </assignment>

  <description>
This course continues to emphasize principles of programming and software engineering while providing an increasing breadth of topics in computer science. Nontext files and pointer-type structures are introduced. Data abstraction is emphasized with introduction to lists, queues, stacks, and trees. Recursive data structures and procedures are employed in programming projects. Algorithms are analyzed for a variety of applications. Introduction to space and time complexity.
  </description>

  <comment>
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>49</usnewsrank>
  <university>Sarah Lawrence College</university>
  <name>Software Engineering</name>
  <number>none</number>
  <url>?</url>
  <language>C++, Java</language>
  <level>1</level>
  <syllabus>?</syllabus>

  <books>
  <book>
   <author>?</author>
   <title>?</title>
  </book>
  </books>

  <assignment>
   <name>?</name>
   <number>?</number>
   <keywords>?</keywords>
   <description>?</description>
   <url>?</url>
  </assignment>

  <description>
The goal of this course is to give students a taste of what it is like to design and develop real software. The quotes by Knuth illustrate two themes of this course that are not necessarily at odds: The challenge of writing good software should not offset the pleasure derived from writing it. Some of the main topics we will cover include why developing reliable, non-trivial software is inherently difficult, the importance of abstraction, the separation of design from implementation, and how to write software in teams. No place is the adage "there is no substitute for experience" more relevant than in software engineering. With that in mind, this course is intended to be hands-on. Design and development techniques will be learned primarily through the design and development of a semester-long software project. Permission of the instructor is required. Students should have at least one semester of programming experience, preferably in C, C++, or Java. 
  </description>

  <comment>
This school has VERY few courses in Computer Science. This is the closest thing to CS-2.
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>1</usnewsrank>
  <university>Harvard</university>
  <name>Introduction to Computer Science II</name>
  <number>CS 51</number>
  <url>http://www.fas.harvard.edu/~lib51/</url>
  <language>LISP, C++, Java</language>
  <level>3</level>
  <syllabus>http://www.fas.harvard.edu/~lib51/Handouts/</syllabus>

  <books>
  <book>
   <author>?</author>
   <title>?</title>
  </book>
  </books>

  <assignment>
   <name>?</name>
   <number>?</number>
   <keywords>?</keywords>
   <description>?</description>
   <url>?</url>
  </assignment>

  <description>
Abstract models for computational processes and their concrete realizations. Functional, imperative, and object-oriented styles of programming; processor and memory architectures; interpretation and compilation of programming languages. State-space search, finite-state processes, formal logic, data and functional abstraction, and syntactic and semantic formalisms as examples of useful abstractions. The engineering of complex software. Laboratory exercises using LISP, C++, and Java.
  </description>

  <comment>
Second course for majors
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>9</usnewsrank>
  <university>Columbia</university>
  <name>Data Structures in C</name>
  <number>CS 3133</number>
  <url>http://www.columbia.edu/~cs3133/</url>
  <language>C</language>
  <level>3</level>
  <syllabus>http://www.columbia.edu/~cs3133/schedule.html</syllabus>

  <books>
  <book>
   <author>Sedgewick</author>
   <title>Algorithms in C</title>
  </book>
  <book>
   <author>Kernighan and Richie</author>
   <title>The C Programming Language</title>
  </book>
  </books>

  <assignment>
   <name>none</name>
   <number>7</number>
   <keywords>BST, binary, tree, merge sort</keywords>
   <description>Revising a previous assignment which stored Harry Potter spells in a spell book. Was implemented with link lists, this assignment requires BSTs. Returning entries in sorted order must be implemented.</description>
   <url>http://www.columbia.edu/~cs3133/project2.html</url>
  </assignment>

  <description>
Data types and Structures: arrays, stacks, singly and doubly linked lists, queues, trees, sets, and graphs. Programming techniques for processing such structures: sorting and searching, hashing, garbage collection. Storage management. Rudiments of the analysis of algorithms. This course will assume knowledge of Java as taught in W1007 or W3101. 
  </description>

  <comment>
This course is the C-version of the second course for majors, which is taught in Java. The Java course has no web-page.
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>17</usnewsrank>
  <university>Emory</university>
  <name>Introduction to Computer Science</name>
  <number>CS 253</number>
  <url>http://www.mathcs.emory.edu/~cs253000/</url>
  <language>Java</language>
  <level>3</level>
  <syllabus>http://www.mathcs.emory.edu/~cs253000/lectures/</syllabus>

  <books>
  <book>
   <author>?</author>
   <title>?</title>
  </book>
  </books>

  <assignment>
   <name>Spell Checker</name>
   <number>4</number>
   <keywords>hash table</keywords>
   <description>Using a hashtable 
to store a dictionary of words--
then checking files for misspelled words.</description>
   <url>http://www.mathcs.emory.edu/~cs253000/handouts/hw4.pdf</url>
  </assignment>

  <description>
Basic data structures (stacks, queues, lists, trees, and graphs) and algorithms for their implementation. Internal searching and sorting. 
  </description>

  <comment>
Third course, first in data structures.
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>25</usnewsrank>
  <university>University of Michigan</university>
  <name>Programming and Introductory Data Structures</name>
  <number>EECS280</number>
  <url>http://www.engin.umich.edu/class/eecs280/06/</url>
  <language>C++</language>
  <level>2</level>
  <syllabus>http://um-captest.ummu.umich.edu/eecs280/lectures/</syllabus>

  <books>
  <book>
   <author>Savitch</author>
   <title>Problem Solving with C++</title>
  </book>
  </books>

  <assignment>
   <name>Encapsulating behavior in a StatisticsVector</name>
   <number>4</number>
   <keywords>vector</keywords>
   <description>Implementing a class: Statistics Vector which has member functions which return certain elements of interest or perform common tasks (max, min, average, etc.)</description>
   <url>http://www.engin.umich.edu/class/eecs280/06/proj4/</url>
  </assignment>

  <description>
Techniques and algorithm development and effective programming, top-down analysis, structured programming, testing, and program correctness. Program language syntax and static and runtime semantics. Scope, procedure instantiation, recursion, abstract data types, and parameter passing methods. Structured data types, pointers, linked data structures, stacks, queues, arrays, records, and trees.
  </description>

  <comment>
Second course for majors
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>41</usnewsrank>
  <university> University of California Irvine</university>
  <name>Introduction to Computer Science II</name>
  <number>ICS 22</number>
  <url>http://www.ics.uci.edu/~klefstad/s/22.html</url>
  <language>Java</language>
  <level>2</level>
  <syllabus>http://www.ics.uci.edu/~klefstad/s/22.html</syllabus>

  <books>
  <book>
   <author>Weiss</author>
   <title>Data Structures and Algorithm Analysis in Java</title>
  </book>
  <book>
   <author>Weiss</author>
   <title>Data Structures and Problem Solving Using Java</title>
  </book>
  </books>

  <assignment>
   <name>none</name>
   <number>4</number>
   <keywords>arrays, class, linked list</keywords>
   <description>Using the ArrayList class to store shapes that make up a picture. Implement a zoo using a linked list of animals which exhibit behaviors when you pet them/feed them certain foods.</description>
   <url>http://www.ics.uci.edu/~klefstad/s/22/hw/4.html</url>
  </assignment>

  <description>
Second of a three-quarter introductory sequence. Covers abstract behavior of classic data structures (lists, stacks, queues, tables, trees), alternative implementations, and analysis of time and space efficiency, recursion, object-oriented programming, and functional programming.
  </description>

  <comment>
Second course for majors
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>49</usnewsrank>
  <university>Rensselaer Polytechnic Institute</university>
  <name>Computer Science II</name>
  <number>CSCI-1200</number>
  <url>http://www.cs.rpi.edu/~kettnv/cs2/</url>
  <language>C++</language>
  <level>2</level>
  <syllabus>http://www.cs.rpi.edu/~kettnv/cs2/lectureNotes.htm</syllabus>

  <books>
  <book>
   <author>Deitel and Deitel</author>
   <title>C++ How to Program</title>
  </book>
  </books>

  <assignment>
   <name>none</name>
   <number>8</number>
   <keywords>input, output, operators, streams, template, set, class, overload</keywords>
   <description>Writing input/output operators and working with streams. Writing a templated Set class which holds some private data, has a few overloaded, operators, and has one member function, AddElement.</description>
   <url>http://www.cs.rpi.edu/~kettnv/cs2/hwks/hwk8.htm</url>
  </assignment>

  <description>
Programming concepts: functions, parameter passing, pointers, arrays, strings, structs, classes, templates. Mathematical tools: sets, functions, and relations, O-notation, complexity of algorithms, proof by induction. Data structures and their representations: data abstraction and internal representation, sequences, trees, binary search trees, associative structures. Algorithms: searching and sorting, generic algorithms, iterative and recursive algorithms. Methods of testing correctness and measuring performance.
  </description>

  <comment>
This is the second course for majors, and it covers trees. The third course is called Data Structures and Algorithms and covers more advanced data structures such as balanced trees, tries, heaps, priority queues, and graphs. 
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>4</usnewsrank>
  <university>Pomona College</university>
  <name>Principles of Computer Science</name>
  <number>CS 60</number>
  <url>http://www.cs.hmc.edu/courses/2000/fall/cs60/</url>
  <language>Java, rex, Prolog</language>
  <level>2</level>
  <syllabus>http://www.cs.hmc.edu/courses/2000/fall/cs60/overview.html</syllabus>

  <books>
  <book>
   <author>Keller</author>
   <title>Computer Science: Abstraction to Implementation</title>
  </book>
  </books>

  <assignment>
   <name>Parser</name>
   <number>7</number>
   <keywords>tree, recursion, parse</keywords>
   <description>Students write a program to parse a logical statement into a "parse tree," in anticipation of evaluating the statement in a future assignment. </description>
     <url>http://www.cs.hmc.edu/courses/2000/fall/cs60/assignments/a7.html</url>
  </assignment>

  <description>
Introduction to principles of computer science. Algorithms, complexity analysis, data structuring, data and procedural abstraction, grammars, correctness, logic principles, processor organization, operating system concepts, programming languages, basic automata theory, and theoretical limitations.
  </description>

  <comment>
This course, the second for majors, covers some data structures (trees, lists, queues, stacks, etc), while a later data structures course covers more complex topics.  Though the data structures in this course are fairly simple, the breadth of the course is impressive, including logic, some hardware discussions, etc.  
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>12</usnewsrank>
  <university>Washington and Lee</university>
  <name>Fundamentals of Computer Science III</name>
  <number>CSCI 201</number>
  <url>http://www.wlu.edu/~lambertk/classes/201/index.html</url>
  <language>Java</language>
  <level>2</level>
  <syllabus>http://www.wlu.edu/~lambertk/classes/201/syllabus.html</syllabus>

  <books>
  <book>
   <author>Lambert and Osborne</author>
   <title>Java: A Framework for Program Design and Data Structures</title>
  </book>
  </books>

  <assignment>
   <name>none</name>
   <number>4</number>
   <keywords>linked list, interface, test, implement</keywords>
   <description>Students implement a linked list implementation of a list class and test it.</description>
   <url>http://www.wlu.edu/~lambertk/classes/201/projects/hw4.htm</url>
  </assignment>

  <description>
Emphasis is on the use and implementation of common data structures, including algorithm analysis and object-oriented design.  Additional topics will be chosen from networking, artificial intelligence, and parallel processing.
  </description>

  <comment>
This is the third course in the curriculum for majors and routinely covers trees, binary search trees, heaps, etc.
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>20</usnewsrank>
  <university>Hamilton</university>
  <name>Data Structures</name>
  <number>CS 111</number>
  <url>http://www.cs.hamilton.edu/~bailey/courses/fall00/111/</url>
  <language>C++, Java</language>
  <level>?</level>
  <syllabus>?</syllabus>

  <books>
  <book>
   <author>?</author>
   <title>?</title>
  </book>
  </books>

  <assignment>
   <name>?</name>
   <number>?</number>
   <keywords>?</keywords>
   <description>?</description>
   <url>?</url>
  </assignment>

  <description>
A second course in object-oriented programming, concentrating on the common information patterns (linear and hierarchical, for example) that arise in many programs, and the implementation of these in structures in ways that are efficient in terms of memory space and running time. In addition to providing a taxonomy of data structures, this course will discuss measures of computational complexity of the algorithms used to manipulate the structures. This course will begin with a further investigation of Java and will introduce the C++ programming language.
  </description>

  <comment>
This is the second course for majors.  Access to the server is apparently forbidden from outside Hamilton.
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>4</usnewsrank>
  <university>MIT</university>
  <name>?</name>
  <number>?</number>
  <url>?</url>
  <language>?</language>
  <level>?</level>
  <syllabus>?</syllabus>

  <books>
  <book>
   <author>?</author>
   <title>?</title>
  </book>
  </books>

  <assignment>
   <name>?</name>
   <number>?</number>
   <keywords>?</keywords>
   <description>?</description>
   <url>?</url>
  </assignment>

  <description>
  </description>

  <comment>
MIT just doesn't seem to have a course that fits the description.  Their first programming course, taught in Scheme, (6.001) covers OO-programming in depth, and thus at least touches on data structures, but that is not its focus.  Likewise, data abstraction is a topic covered in 6.170, "Laboratory in Software Engineering," but that course focuses on "large software systems," which seems more analogous to our CPS 108.  I haven't found any other courses focusing on programming at all. Their course listings for EECS are at http://student.mit.edu/catalog/m6a.html.
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>12</usnewsrank>
  <university>Northwestern</university>
  <name>Data Structures</name>
  <number>CPS 311</number>
  <url>http://www.cs.northwestern.edu/courses/cs311/</url>
  <language>C++</language>
  <level>2</level>
  <syllabus>http://www.cs.northwestern.edu/courses/cs311/</syllabus>

  <books>
  <book>
   <author>Budd</author>
   <title>Data Structures in C++ using the Standard Template Library</title>
  </book>
  </books>

  <assignment>
   <name>Binary Search Trees</name>
   <number>4</number>
   <keywords>binary, search, tree, test</keywords>
   <description>Students must write functions to test sets and search trees for certain conditions.</description>
   <url>http://www.cs.northwestern.edu/courses/cs311/assignments/4/</url>
  </assignment>

  <description>
The design, implementation, and analysis of abstract data types, data structures and their algorithms. Topics include: data and procedural abstraction, linked lists, stacks, queues, binary trees, searching, and sorting. Required for computer science majors.
  </description>

  <comment>
Second course for majors.
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>20</usnewsrank>
  <university>University of Virginia</university>
  <name>Program and Data Representation</name>
  <number>CPS 216</number>
  <url>http://www.cs.virginia.edu/~cs216/</url>
  <language>C++</language>
  <level>3</level>
  <syllabus>http://www.cs.virginia.edu/~cs216/outline.htm</syllabus>

  <books>
  <book>
   <author>Weiss</author>
   <title>Data Structure and Algorithm Analysis in C++</title>
  </book>
  </books>

  <assignment>
   <name>AVL Trees</name>
   <number>6</number>
   <keywords>binary tree avl search</keywords>
   <description>Students examine the difference in performance between AVL Trees and binary trees by using both with the same set of data and test operations.</description>
   <url>http://www.cs.virginia.edu/~cs216/labs/lab6/lab6.pdf</url>
  </assignment>

  <description>
Introduces programs and data representation at the machine level. Data structuring techniques and the representation of data structures during program execution. Operations and control structures and their representation during program execution. Representations of numbers, arithmetic operations, arrays, records, recursion, hashing, stacks, queues, trees, graphs, and related concepts.
  </description>

  <comment>
This is the third course for majors, following an introductory CS course and a programming course.  Discrete Mathematics (CS 202) is also a prerequisite.
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>28</usnewsrank>
  <university>Tufts University</university>
  <name>Data Structures</name>
  <number>Comp 15</number>
  <url>http://www.cs.tufts.edu/g/15/</url>
  <language>C</language>
  <level>3</level>
  <syllabus>http://www.eecs.tufts.edu/g/15/syllabus/syllabus.html</syllabus>

  <books>
  <book>
   <author>Sahni</author>
   <title>Data Structures, Algorithms, and Applications in C++</title>
  </book>
  </books>

  <assignment>
   <name>Linked Lists and Compression</name>
   <number>2</number>
   <keywords>linked list compression class</keywords>
   <description>Students use linked lists to implement a class for the purpose of compressing/decompressing files.  Function prototypes are provided.</description>
   <url>http://www.eecs.tufts.edu/g/15/Rproject2/node2.html</url>
  </assignment>

  <description>
A second course in computer science. Data structures and algorithms are studied through major programming projects in the C programming language. Topics include linked lists, trees, graphs, dynamic storage allocation and recursion. 
  </description>

  <comment>
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>36</usnewsrank>
  <university>University of Wisconsin, Madison</university>
  <name>Intro to Data Structures</name>
  <number>CS 367</number>
  <url>http://www.cs.wisc.edu/~cs367-1/cs367.html</url>
  <language>Java</language>
  <level>3</level>
  <syllabus>http://www.cs.wisc.edu/~cs367-1/topics.html</syllabus>

  <books>
  <book>
   <author>?</author>
   <title>?</title>
  </book>
  </books>

  <assignment>
   <name>Testing Interfaces and Code</name>
   <number>3</number>
   <keywords>test class interface</keywords>
   <description>Students implement TestQueue.java, a class to test the public interface of a class Queue.java for correctness and completeness.</description>
   <url>http://www.cs.wisc.edu/~cs367-1/assignments/Prog3/Program3</url>
  </assignment>

  <description>
Study of data structures (including stacks, queues, trees, graphs, and hash tables) and their applications. Development, implementation, and analysis of efficient data structures and algorithms (including sorting and searching). Experience in use of an object-oriented programming language.
  </description>

  <comment>
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>44</usnewsrank>
  <university>Tulane</university>
  <name>Object-oriented Design and Programming</name>
  <number>CPSC 102</number>
  <url>http://www.eecs.tulane.edu/Belkhouche/</url>
  <language>C++</language>
  <level>1</level>
  <syllabus>http://www.eecs.tulane.edu/Belkhouche/bb_dir/102admin.html</syllabus>

  <books>
  <book>
   <author>Deitel and Deitel</author>
   <title>C++ How to Program</title>
  </book>
  </books>

  <assignment>
   <name>Nile.com</name>
   <number>5, 6</number>
   <keywords>search, class</keywords>
   <description>Students design and implement an online book-store that supports searching for, buying, returning, and holding books.</description>
   <url>http://www.eecs.tulane.edu/Belkhouche/bb_dir/asg6f00.html</url>
  </assignment>

  <description>
An introduction to object-oriented analysis, design, and programming. Object-oriented methodology, including processes and notations, is covered. Concepts of classes, objects, inheritance, and polymorphism are discussed. Structural and behavioral modeling is emphasized throughout the course. An object-oriented language (e.g., C++) is introduced and used to implement OO designs.
  </description>

  <comment>
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>52</usnewsrank>
  <university>Auburn</university>
  <name>Data Structures</name>
  <number>Comp 2210</number>
  <url>?</url>
  <language>Java</language>
  <level>?</level>
  <syllabus>?</syllabus>

  <books>
  <book>
   <author>?</author>
   <title>?</title>
  </book>
  </books>

  <assignment>
   <name>?</name>
   <number>?</number>
   <keywords>?</keywords>
   <description>?</description>
   <url>?</url>
  </assignment>

  <description>
  </description>

  <comment>
Couldn't find a course web site after exhaustive search.
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>60</usnewsrank>
  <university>Colorado School of Mines</university>
  <name>Data Structures</name>
  <number>MACS 262</number>
  <url>?</url>
  <language>C++</language>
  <level>2</level>
  <syllabus>?</syllabus>

  <books>
  <book>
   <author>Main and Savitch</author>
   <title>Data Structures and other Objects Using C++</title>
  </book>
  </books>

  <assignment>
   <name>none</name>
   <number>3</number>
   <keywords>double linked list, implementation, overloaded operator, template</keywords>
   <description>Students implement a class to build and manipulate double-linked-lists, including overloaded assignment and comparison operators, incorporating a provided Error class to handle error conditions.</description>
   <url>http://www.mines.edu/Academic/courses/math_cs/macs262/hw3.shtml</url>
  </assignment>

  <description>
Abstract data types, user-defined data structures, linked lists, queues, graphs, trees, binary trees, binary search trees, hash tables, searching and sorting.
  </description>

  <comment>
Second course for majors.  Course web pages is on BlackBoard system, but I found remnants of the summer version of the course, and that's wherefrom this information was obtained.
  </comment>
</course>

##############################################################
<course>   
  <usnewsrank>1</usnewsrank>
  <university>Stanford University</university>
  <name>Programming Abstractions</name>
  <number>CS 106B</number>
  <url>http://www.stanford.edu/class/cs106b/</url>
  <language>C</language>
  <level>?</level>
  <syllabus>?</syllabus>

  <books>
  <book>
   <author>?</author>
   <title>?</title>
  </book>
  </books>

  <assignment>
   <name>?</name>
   <number>?</number>
   <keywords>?</keywords>
   <description>?</description>
   <url>?</url>
  </assignment>

  <description>
  </description>

  <comment>
  </comment>
</course>

##############################################################
<course>   
  <usnewsrank>3</usnewsrank>
  <university>California Institute of Technology</university>
  <name>Introduction to Data Structures and Algorithms</name>
  <number>CS 2</number>
  <url>http://www.ugcs.caltech.edu/~cs2/</url>
  <language>C++</language>
  <level>3</level>
  <syllabus>http://www.ugcs.caltech.edu/~cs2/lectures/</syllabus>

  <books>
  <book>
   <author>?</author>
   <title>?</title>
  </book>
  </books>

  <assignment>
   <name>Zork</name>
   <number>7</number>
   <keywords>pointers, inheritance, concept design</keywords>
   <description>create a text-based adventure game</description>
   <url>http://www.ugcs.caltech.edu/~cs2/lab7/</url>
  </assignment>

  <description>
CS 2 is a challenging course in programming languages and computer science, emphasizing modes of algorithmic expression. The course will include such topics as performance analysis of algorithms; proofs of program correctness; recursive and higher-order procedures; data structures, including lists, trees, graphs, and arrays; objects and abstract data types. The course includes weekly laboratory exercises and written homework covering the lecture material and program design
  </description>

  <comment>
Second course for majors. No required text. Students used man pages and lecture notes.
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>11</usnewsrank>
  <university>University of Chicago</university>
  <name>Programming C++</name>
  <number>CSPP 513</number>
  <url>http://people.cs.uchicago.edu/~jagolbec/cspp536/</url>
  <language>C++</language>
  <level>2</level>
  <syllabus>http://people.cs.uchicago.edu/~jagolbec/cspp536/syllabus.html</syllabus>

  <books>
  <book>
     <author>Stroustrup</author>
   <title>The C++ Programming Language</title>
  </book>
  <book>
   <author>Winston</author>
   <title>On to C++</title>
  </book>
  </books>

  <assignment>
   <name>Classes and Arrays</name>
   <number>2</number>
   <keywords>arrays, interface</keywords>
   <description>catalog a collection of tama-guccis</description>
   <url>http://people.cs.uchicago.edu/~jagolbec/cspp536/hw2.html</url>
  </assignment>

  <description>
An introduction to computer programming using C++. Students learn concepts of procedural and object-oriented programming. Topics include control and data abstraction, self-reference, and basic algorithms and data structures
  </description>

  <comment>
Not required for majors
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>19</usnewsrank>
  <university>University of California Berkeley</university>
  <name>Data Structures and Advanced Programming</name>
  <number>CS 61B</number>
  <url>http://www-inst.eecs.berkeley.edu/~cs61b/</url>
  <language>Java</language>
  <level>3</level>
  <syllabus>http://www-inst.eecs.berkeley.edu/~cs61b/lectures/index.html</syllabus>

  <books>
  <book>
   <author>Hilfinger</author>
   <title>Programming Intro Java</title>
  </book>
  </books>

  <assignment>
   <name>Puzzle Solver</name>
   <number>2</number>
   <keywords>algorithm design, modules</keywords>
   <description>solve a logic probelm</description>
   <url>http://www-inst.eecs.berkeley.edu/~cs61b/hw/proj2.pdf</url>
  </assignment>

  <description>
Fundamental dynamic data structures, including linear lists, queues, trees, and other linked structures; arrays strings, and hash tables. Storage management. Elementary principles of software engineering. Abstract data types. Algorithms for sorting and searching. Introduction to the Java programming language.
  </description>

  <comment>
Second course for majors
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>27</usnewsrank>
  <university>Wake Forest University</university>
  <name>Data Structures</name>
  <number>CSC 235</number>
  <url>http://www.mthcsc.wfu.edu/~burg/Courses/Fall00/CSC235/</url>
  <language>C++, Java</language>
  <level>3</level>
  <syllabus>http://web.cs.wfu.edu/~hemler/courses/CSC112/current/admin/calendar.html</syllabus>

  <books>
  <book>
   <author>Sahni</author>
   <title>Data Structures, Algorithms, and Applications in C++</title>
  </book>
  </books>

  <assignment>
   <name>none</name>
   <number>4</number>
   <keywords>recursion, stack, graphics</keywords>
   <description>implement maze program from text</description>
   <url>http://www.mthcsc.wfu.edu/~burg/Courses/Fall00/CSC235/assignments/Assignment4.html</url>
  </assignment>

  <description>
Study, analysis, and implementation of abstract data structures such as list, stack, queue, and tree. Complexity analysis of algorithms which operate upon these data structures.
  </description>

  <comment>
Second course for majors
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>35</usnewsrank>
  <university>University of Southern California</university>
  <name>Data Structures</name>
  <number>CSCI 102</number>
  <url>http://www-scf.usc.edu/~csci102/</url>
  <language>C++</language>
  <level>2</level>
  <syllabus>http://www-scf.usc.edu/~csci102/fall2000/sched.html</syllabus>

  <books>
  <book>
   <author>Main and Savitch</author>
   <title>Data Structures and Other Objects Using C++</title>
  </book>
  <book>
   <author>Deitel and Deitel</author>
   <title>C++ How to Program</title>
  </book>
  </books>

  <assignment>
   <name>none</name>
   <number>2</number>
   <keywords>postfix, loop</keywords>
   <description>implement a problem from the text</description>
   <url>http://www-scf.usc.edu/~csci102/fall2000/progassigments.html</url>
  </assignment>

  <description>
Linear lists, strings, arrays, and orthogonal lists; graphs, trees, binary trees, multilinked structures, sorting techniques; dynamic storage allocation; applications.
  </description>

  <comment>
Second course for majors
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>43</usnewsrank>
  <university>Pennsylvania State University</university>
  <name>Intermediate Programming</name>
  <number>CSE 120</number>
  <url>http://www.lv.psu.edu/ojj/courses/cse-120.html</url>
  <language>C++</language>
  <level>2</level>
  <syllabus>http://www.lv.psu.edu/ojj/courses/cse-120/general/topics.html</syllabus>

  <books>
  <book>
   <author>?</author>
   <title>?</title>
  </book>
  </books>

  <assignment>
   <name>Treesort alphabetizer</name>
   <number>3</number>
   <keywords>recursion, trees, sort</keywords>
   <description>develop a treesort that recursively alphabetizes the strings inserted into a binary search tree, keeping the tree balanced at all times</description>
   <url>http://www.lv.psu.edu/ojj/courses/cse-120/assignments/treesort.html</url>
  </assignment>

  <description>
Systematic programming; top-down program development, documentation, and testing; introduction to data structures, text processing, numerical methods, algorithm analysis, program verification.
  </description>

  <comment>
Second course for majors
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>51</usnewsrank>
  <university>American University</university>
  <name>Introduction to Computer Science II</name>
  <number>CSIS 281</number>
  <url>http://www.cas.american.edu/~linvill/courses/c/6428101s00.htm</url>
  <language>C++</language>
  <level>1</level>
  <syllabus>http://www.cas.american.edu/~linvill/courses/c/6428101s00.htm</syllabus>

  <books>
  <book>
   <author>Deitel and Deitel</author>
   <title>C++ How to Program</title>
  </book>
  </books>

  <assignment>
   <name>?</name>
   <number>?</number>
   <keywords>?</keywords>
   <description>no online assignments. All handwritten</description>
   <url>?</url>
  </assignment>

  <description>
A second level course in computing for students who are computer science majors or who will use computers in their academic and professional careers. Students will further develop problem solving and programming skills. The programming language C++ will be studied, and students will become proficient in their use. Emphasis will be on large programs built from modules. An overview of the field of Computer Science and the impact of computers on society will be discussed. 
  </description>

  <comment>
Second course for majors
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>59</usnewsrank>
  <university>Clemson University</university>
  <name>Computer Science 2</name>
  <number>CS 102</number>
  <url>http://www.cs.clemson.edu/~cs102/</url>
  <language>Java</language>
  <level>2</level>
  <syllabus>?</syllabus>

  <books>
  <book>
   <author>Main and Savitch</author>
   <title>Data Structures and Other Objects using Java</title>
  </book>
  </books>

  <assignment>
   <name>none</name>
   <number>8</number>
   <keywords>stack</keywords>
   <description>implements a char stack, write code to test proper nestings.</description>
   <url>http://www.cs.clemson.edu/~lab102/labs/lab8/lab8.html</url>
  </assignment>

  <description>
Continuation of CpSc 101, with continued emphasis on problem solving and program development techniques. Typical numerical, nonnumerical, and data processing problems will be examined. Basic data structures will be introduced. 
  </description>

  <comment>
Second course for majors
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>3</usnewsrank>
  <university>Wellesley College</university>
  <name>Data Structures</name>
  <number>CS 230</number>
  <url>http://rocky.wellesley.edu/cs230/</url>
  <language>Java</language>
  <level>2</level>
  <syllabus>http://rocky.wellesley.edu/cs230/syllabus/syllabus.html</syllabus>

  <books>
  <book>
   <author>Downey</author>
   <title>Data Structures in Java</title>
  </book>
  </books>

  <assignment>
   <name>Postfix Calculator</name>
   <number>6</number>
   <keywords>stack</keywords>
   <description>Write a program that prompts the user for a mathematical expression in postfix and that evaluates the expression and prints the result. uses stacks. student must design a class that the user can easily interact with.</description>
   <url>http://rocky.wellesley.edu/cs230/hw06/node1.html</url>
  </assignment>

  <description>
An introduction to techniques and building blocks for organizing large programs. Topics include: modules, abstract data types, recursion, algorithmic efficiency, and the use and implementation of standard data structures and algorithms such as lists, trees, graphs, stacks, queues, priority queues, tables, sorting, and searching. Students become familiar with these concepts through weekly programming assignments using the Java programming language.
  </description>

  <comment>
Second course for majors
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>11</usnewsrank>
  <university>Smith College</university>
  <name>Computer Science II</name>
  <number>CSC 112</number>
  <url>http://cs.smith.edu/~thiebaut/classes/112/112.html</url>
  <language>C++</language>
  <level>3</level>
  <syllabus>http://cs.smith.edu/~streinu/Teaching/Courses/112.html</syllabus>

  <books>
  <book>
   <author>Horton</author>
   <title>Ivor Horton's Beginning C++, The Complete Language ANSI/ISO Compliant</title>
  </book>
  </books>

  <assignment>
   <name>Word Frequency</name>
   <number>5</number>
   <keywords>vector, streams</keywords>
   <description>read in a text file and output the words in order of frequency
    </description>
   <url>http://cs.smith.edu/~thiebaut/classes/112/hw5.htm</url>
  </assignment>

  <description>
This is the second programming course in the required Computer Science major sequence. It will cover more advanced programming techniques (object oriented), more advanced Unix concepts, data structures and the object oriented programming language C++.
  </description>

  <comment>
Second course for majors
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>19</usnewsrank>
  <university>Colby College</university>
  <name>Data Structures and Algorithms</name>
  <number>CS 231</number>
  <url>http://www.cs.colby.edu/~djskrien/cs231-fall00/index.html</url>
  <language>Java</language>
  <level>3</level>
  <syllabus>?</syllabus>

  <books>
  <book>
   <author>Standish</author>
   <title>Data Structures in Java</title>
  </book>
  </books>

  <assignment>
   <name>Using Vectors to Implement and Generalize Priority Queues</name>
   <number>4</number>
   <keywords>priority queue, tvectors, template</keywords>
   <description>implement a priority queue using tvectors, then template the implementation</description>
   <url>http://www.duke.edu/~rmp4/project%204.txt</url>
  </assignment>

  <description>
Using Java, an introduction to the primary data structures and the algorithms that operate on them. Data structures to be studied include arrays, graphs, trees, stacks, and queues. The algorithms include searching, sorting, insertion, deletion, and traversal. A weekly laboratory session provides hands-on computer experience.
  </description>

  <comment>
Second course for majors. Coursesite is local access only.
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>27</usnewsrank>
  <university>Connecticut College</university>
  <name>Data Structures</name>
  <number>COM 212</number>
  <url>http://www.conncoll.edu/academics/departments/comsci/com212/</url>
  <language>Java</language>
  <level>2</level>
  <syllabus>http://www.conncoll.edu/academics/departments/comsci/com212/syllabus.html</syllabus>

  <books>
  <book>
   <author>Horstmann</author>
   <title>Computing Concepts with Java 2 Essentials</title>
  </book>
  </books>

  <assignment>
   <name>?</name>
   <number>?</number>
   <keywords>?</keywords>
   <description>?</description>
   <url>http://www.conncoll.edu/academics/departments/comsci/com212/progassign.html</url>
  </assignment>

  <description>
Abstract data structures such as lists, stacks, queues and trees will be studied as well as programming techniques using recursion and pointers. Searching and sorting algorithms and algorithms analysis will also be discussed. Principles of software design will be explored by constructing major programs. 
  </description>

  <comment>
Second course for majors
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>35</usnewsrank>
  <university>Lafayette College</university>
  <name>Principles Of Computer Science II</name>
  <number>CS 103</number>
  <url>http://www.cs.lafayette.edu/~collinsw/cs103/index.html</url>
  <language>Java, C++</language>
  <level>3</level>
  <syllabus>http://www.cs.lafayette.edu/~collinsw/cs103/index.html</syllabus>

  <books>
  <book>
   <author>Collins</author>
   <title>Data Structures and the Java Collections Framework</title>
  </book>
  <book>
   <author>Collins</author>
   <title>Data Structures and the Standard Template Library</title>
  </book>
  </books>

  <assignment>
   <name>Eight Queens</name>
   <number>4</number>
   <keywords>stack, backtracking</keywords>
   <description>classic eight queens on a chess board problem</description>
   <url>http://www.cs.lafayette.edu/~collinsw/cs103/project4.html</url>
  </assignment>

  <description>
  </description>

  <comment>
Second course for majors
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>43</usnewsrank>
  <university>Furman University</university>
  <name>Introduction to Computer Science II</name>
  <number>CP 12</number>
  <url>http://s9000.furman.edu/~pgabbert/cs12/main.html</url>
  <language>C++</language>
  <level>1</level>
  <syllabus>?</syllabus>

  <books>
  <book>
   <author>Lambert, Nance, and Naps</author>
   <title>Introduction to Computer Science with C++</title>
  </book>
  </books>

  <assignment>
   <name>Inspector Inheritance and the Missing Link</name>
   <number>6</number>
   <keywords>linked list, inheritance</keywords>
   <description>similar to multiset</description>
   <url>http://s9000.furman.edu/~pgabbert/cs12/labs/lab06.html</url>
  </assignment>

  <description>
A continuation of CS11. Emphasis on use of data structures to model and implement algorithms as computer programs. Principles of high-level program analysis and design.
  </description>

  <comment>
Second course for majors
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>62</usnewsrank>
  <university>Hollins University</university>
  <name>Computer Science II</name>
  <number>CMPS 260</number>
  <url>?</url>
  <language>?</language>
  <level>1</level>
  <syllabus>?</syllabus>

  <books>
  <book>
   <author>?</author>
   <title>?</title>
  </book>
  </books>

  <assignment>
   <name>?</name>
   <number>?</number>
   <keywords>?</keywords>
   <description>?</description>
   <url>?</url>
  </assignment>

  <description>
Digital computer programming with emphasis on file manipulation, multiple part programs, and threads. Various data structures such as lists, stacks, queues, and trees are introduced. Offered to first-year students.
  </description>

  <comment>
Second course for majors
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>70</usnewsrank>
  <university>Presbyterian College</university>
  <name>Fundamental of Computer Science II</name>
  <number>CS 301/302</number>
  <url>?</url>
  <language>?</language>
  <level>?</level>
  <syllabus>?</syllabus>

  <books>
  <book>
   <author>?</author>
   <title>?</title>
  </book>
  </books>

  <assignment>
   <name>?</name>
   <number>?</number>
   <keywords>?</keywords>
   <description>?</description>
   <url>?</url>
  </assignment>

  <description>
A study of principles of program design and implementation, using a modern programming language. Emphasis will be placed on procedure abstraction and data abstraction, and on the effective use of subprograms and data structures in implementing them. Students will write several programs of increasing complexity, culminating in a large group project.
  </description>

  <comment>
Second course for majors
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>2</usnewsrank>
  <university>Williams</university>
  <name>Computer Science 136</name>
  <number>CS 136</number>
  <url>http://www.cs.williams.edu/~andrea/cs136/index.html</url>
  <language>Java</language>
  <level>3</level>
  <syllabus>?</syllabus>

  <books>
  <book>
   <author>?</author>
   <title>?</title>
  </book>
  </books>

  <assignment>
   <name>Text Reader</name>
   <number>4</number>
   <keywords>?</keywords>
   <description>Who knows?  The only material available on the course "webpage" was sample input, and a tiny bit of code.</description>
   <url>http://www.cs.williams.edu/~bailey/courses/cs136/</url>
  </assignment>

  <description>
This is an introductory data structures course. Currently it is taught in Java. Students work with basic data structures including vectors, lists, trees, search trees, dictionaries, hash tables, and graphs. This course has a weekly three hour lab. Students with significant experience in Java and structures up to hash tables and graphs should consider advanced placement to Computer Science 237.
  </description>

  <comment>
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>10</usnewsrank>
  <university>Davidson</university>
  <name>Data Structures and Algorithms</name>
  <number>CSC 321</number>
  <url>http://www.davidson.edu/academic/math/davis/courses/csc321/index.html</url>
  <language>Java</language>
  <level>2</level>
  <syllabus>http://www.davidson.edu/academic/math/davis/courses/csc321/syllabus.html</syllabus>

  <books>
  <book>
   <author>Goodrich and Tamassia</author>
   <title>Data Structures and Algorithms in Java</title>
  </book>
  <book>
   <author>Felleisen and Friedman</author>
   <title>A Little Java, A Few Patterns</title>
  </book>   
  </books>

  <assignment>
   <name>?</name>
   <number>?</number>
   <keywords>?</keywords>
   <description>?</description>
   <url>?</url>
  </assignment>

  <description>
Programming techniques and data structures using the C programming language.
  </description>

  <comment>
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>18</usnewsrank>
  <university>Bates</university>
  <name>Computer Science II</name>
  <number>CS 102</number>
  <url>?</url>
  <language>Visual BASIC</language>
  <level>1</level>
  <syllabus>?</syllabus>

  <books>
  <book>
   <author>?</author>
   <title>?</title>
  </book>
  </books>

  <assignment>
   <name>?</name>
   <number>?</number>
   <keywords>?</keywords>
   <description>?</description>
   <url>?</url>
  </assignment>

  <description>
A continuation of Computer Science I. The major emphasis of the course is on advanced program design concepts and techniques, and their application to the development of high-quality software. Specific topics covered include the software development cycle, abstract datatypes, files, recursion, and object-oriented programming. Computer Science 101 and 102 provide a foundation for further study in computer science.
  </description>

  <comment>
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>26</usnewsrank>
  <university>Bucknell</university>
  <name>Introduction to Computer Science II</name>
  <number>CSCI 204</number>
  <url>http://www.eg.bucknell.edu/~cs204/Fall00/</url>
  <language>C++</language>
  <level>2</level>
  <syllabus>http://www.eg.bucknell.edu/~cs204/Fall00/assignments.pdf</syllabus>

  <books>
  <book>
   <author>Berman</author>
   <title>Data Structures via C++</title>
  </book>
  </books>

  <assignment>
   <name>Tic-Tac-Toe</name>
   <number>4</number>
   <keywords>arrays, backtracking</keywords>
   <description>The program plays an optimal game of tic-tac-toe.</description>
   <url>http://www.eg.bucknell.edu/~cs204/Fall00/hw4-view.pdf</url>
  </assignment>

  <description>
Methods of software engineering applied to design and programming. Topics include object-oriented design, elementary data structures, recursion, and programming team dynamics. Prerequisite: CSCI 203 or permission of the instructor.
  </description>

  <comment>
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>34</usnewsrank>
  <university>Union</university>
  <name>Introduction to Computer Science II</name>
  <number>CSc 77</number>
  <url>http://tardis.union.edu/csc077/</url>
  <language>C++</language>
  <level>2</level>
  <syllabus>http://tardis.union.edu/csc077/csc077-syl.html</syllabus>

  <books>
  <book>
   <author>Carrano, Helman, and Veroff</author>
   <title>Data Abstraction and Problem Solving with C++</title>
  </book>
  <book>
   <author>Glass and Schuichert</author>
   <title>The STL Primer</title>
  </book>
  <book>
   <author>Young and Levine</author>
   <title>Unix for Dummies: Quick Reference</title>
  </book>
  </books>

  <assignment>
   <name>Sets of Integers</name>
   <number>2</number>
   <keywords>sets</keywords>
   <description>Design a class for integer sets that supports providing unions and intersections.</description>
   <url>http://tardis.union.edu/csc077/hw002.html</url>
  </assignment>

  <description>
Basic concepts of data organization and abstraction, software design, stacks, queues, trees, and their implementation with linked structures. Sorting and searching techniques.
  </description>

  <comment>
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>42</usnewsrank>
  <university>Denison</university>
  <name>Introduction to Computer Science II</name>
  <number>CS 271-272</number>
  <url>?</url>
  <language>C++, Java</language>
  <level>3</level>
  <syllabus>?</syllabus>

  <books>
  <book>
   <author>?</author>
   <title>?</title>
  </book>
  </books>

  <assignment>
   <name>?</name>
   <number>?</number>
   <keywords>?</keywords>
   <description>?</description>
   <url>?</url>
  </assignment>

  <description>
Topics include algorithm analysis; stacks; queues; lists; trees; forests; heaps; hash tables; priority queues; coalescable equivalence relations as ADTs; sorting algorithms and their analyses; Prim, Kruskal, Dijkstra, other graph algorithms; algorithm design strategies including greedy, dynamic programming, probabilistic, backtracking, and divide and conquer; introduction to P and NP; emphasis on the object oriented paradigm using C++ or java, with exposure to the functional programming paradigm using lisp, scheme, ML, or some other functional language.
  </description>

  <comment>
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>50</usnewsrank>
  <university>Willamette</university>
  <name>Data Structures</name>
  <number>CS 241</number>
  <url>http://www.willamette.edu/~levenick/cs241/cs241.html</url>
  <language>Java</language>
  <level>3</level>
  <syllabus>?</syllabus>

  <books>
  <book>
   <author>Main and Savitch</author>
   <title>Data Structures and Other Objects Using C++</title>
  </book>
  </books>

  <assignment>
   <name>Bouncy Bouncy</name>
   <number>5</number>
   <keywords>threads, vectors, graphics</keywords>
   <description>Simulate molecules bouncing around in a box.</description>
   <url>http://www.willamette.edu/~levenick/cs241/labs/lab5_circle.htm</url>
  </assignment>

  <description>
Theoretical and practical study of programming and abstract data types in Java including lists, stacks, queues, trees and algorithms used on these data structures. The course includes object implementation of structures and sharpens programming skills learned in previous courses. Prerequisite: Programming experience in some higher-level programming language.
  </description>

  <comment>
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>58</usnewsrank>
  <university>Gustavus Adolphus</university>
  <name>Introduction to Computer Science II</name>
  <number>MCS 178</number>
  <url>http://www.gac.edu/~mc28/F2000/</url>
  <language>Java</language>
  <level>2</level>
  <syllabus>http://www.gac.edu/~mc28/F2000/syllabus.html</syllabus>

  <books>
  <book>
      <author>Hailperin, Kaiser, and Knight</author>
   <title>Concrete Abstractions: An Introduction to Computer Science</title>
  </book>
  </books>

  <assignment>
   <name>Robot Cars</name>
   <number>4</number>
   <keywords>robotics</keywords>
   <description>Design some functions to enable control of robotic cards.</description>
   <url>http://www.gac.edu/~mc28/F2000/labs/robots/</url>
  </assignment>

  <description>
A continuation of MCS-177. Students will learn how to use programming language definition as an abstraction mechanism by writing and modifying a Scheme interpreter in Scheme. They will also be introduced to the notion of state through a simplified computer architecture and its assembly language. Students then explore how the abstraction of state can be used to construct more efficient computational processes than otherwise, and to construct software systems that are modular and naturally reflect the structure of non-computational systems that the software models, especially through object-oriented programming.
  </description>

  <comment>
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>2</usnewsrank>
  <university>Yale</university>
  <name>A Second Course in Programming</name>
  <number>CS 200</number>
  <url>http://zoo.cs.yale.edu/classes/cs200/</url>
  <language>C</language>
  <level>3</level>
  <syllabus>http://www.cs.yale.edu/homes/xiao/cs210/syllabus.html</syllabus>

  <books>
   <book>
     <author>Reek</author>
     <title>Pointers on C</title>
   </book>   
   <book>
     <author>Kernigan and Ritchie</author>
     <title>The C Programming Language</title>
   </book>
   <book>
     <author>Harbison and Steele</author>
     <title>C, A Reference Manual</title>
   </book>
  </books>

   <assignment>
   <name>Long Numbers</name>
   <number>2</number>
   <keywords>arrays, pointers, arithmetic</keywords>
   <description>Write functions to implement the multiplication and division of arbitrary precision numbers.</description>
   <url>http://www.cs.yale.edu/homes/xiao/cs210/cs200_as2.txt</url>
   </assignment>

   <description>
Programming techniques and data structures using the C programming language.
   </description>

   <comment>
   </comment>
</course>

##############################################################
<course>
  <usnewsrank>10</usnewsrank>
  <university>Cornell</university>
  <name>Computers and Programming</name>
  <number>COM S 211</number>
  <url>http://www.cs.cornell.edu/Courses/cs211/2000fa/</url>
  <language>Java</language>
  <level>2</level>
  <syllabus>http://www.cs.cornell.edu/Courses/cs211/2000fa/CourseInfo.htm</syllabus>

  <books>
   <book>
   <author>?</author>
   <title>?</title>
   </book>
  </books>

   <assignment>
   <name>Word Count</name>
   <number>4</number>
   <keywords>trees, sets</keywords>
   <description>Reads in words from a text file and print out the number of words and unique words.  Also, implement the add operation on a search tree, and analyze the run times of algorithms.</description>
   <url>http://www.cs.cornell.edu/Courses/cs211/2000fa/hw/hw4/hw4.htm</url>
   </assignment>

   <description>
   Intermediate programming in a high-level language and introduction to computer science. Topics include program structure and organization, modules (classes), program development, proofs of program correctness, recursion, data structures and types (lists, stacks, queues, trees), object-oriented and functional programming, and analysis of algorithms. Java is the principal programming language.
   </description>

   <comment>
   </comment>
</course>

##############################################################
<course>
  <usnewsrank>18</usnewsrank>
  <university>Notre Dame</university>
  <name>Data Structures</name>
  <number>CSE 331</number>
  <url>http://www.cse.nd.edu/courses/cse331/www/</url>
  <language>C++</language>
  <level>3</level>
  <syllabus>http://www.cse.nd.edu/courses/cse331/www/syllabus00.html</syllabus>

  <books>
   <book>
   <author>Weiss</author>
   <title>Data Structures and Problem Solving Using C++</title>
   </book>
   <book>
   <author>Stroustrup</author>
   <title>The C++ Programming Language</title>
   </book>
  </books>

   <assignment>
   <name>Spell Check</name>
   <number>3</number>
   <keywords>strings, red-black trees</keywords>
   <description>Write a spell checker for text files.</description>
   <url>http://www.cse.nd.edu/courses/cse331/www/hw/pa3/pa3.pdf</url>
   </assignment>

   <description>
Fundamental techniques in the design and analysis of non-numerical algorithms and their data structures. Elementary data structures such as lists, stacks, queues; more advanced ones such as deques, priority queues, and search trees. Design techniques such as divide-and-conquer. Sorting and searching algorithms. File compression, geometric methods, linear programming, random number generators, and string processing.
   </description>

   <comment>
   </comment>
</course>

##############################################################
<course>
  <usnewsrank>26</usnewsrank>
  <university>UNC Chapel Hill</university>
  <name>Systematic Programming</name>
  <number>COMP 114</number>
  <url>http://www.cs.unc.edu/~weiss/COMP114/</url>
  <language>Java</language>
  <level>2</level>
  <syllabus>http://www.cs.unc.edu/~weiss/COMP114/03-Syllabus.doc</syllabus>

  <books>
   <book>
   <author>Bailey</author>
   <title>Java Structures</title>
   </book>
   <book>
   <author>Stanat and Weiss</author>
   <title>Unpublished Manuscript</title>
   </book>
  </books>

   <assignment>
   <name>Coin Counter</name>
   <number>3</number>
   <keywords>vectors</keywords>
   <description>Write a program that counts the number of ways to make change for a given amount with arbitrarily valued coins.</description>
   <url>http://www.cs.unc.edu/~weiss/COMP114/29-Program3.doc</url>
   </assignment>

   <description>
Prerequisite, COMP 14 or 15. Advanced programming. Program specifications; preconditions, postconditions, loop invariants. Linear data structures, searching and sorting. Algorithm paradigms and analysis. Fall and spring. Dewan, Weiss.
   </description>

   <comment>
   </comment>
</course>

##############################################################
<course>
  <usnewsrank>34</usnewsrank>
  <university>University of Rochester</university>
  <name>Data Structures</name>
  <number>CSC 172</number>
  <url>http://www.cs.rochester.edu/u/www/courses/171/Spring-00/CSC172SP00/</url>
  <language>Java</language>
  <level>3</level>
  <syllabus>http://www.cs.rochester.edu/u/www/courses/171/Spring-00/CSC172SP00/intro.html</syllabus>

  <books>
   <book>
   <author>Weiss</author>
   <title>Data Structures and Algorithm Analysis in Java</title>
   </book>
   <book>
   <author>Deitel and Deitel</author>
   <title>Java How to Program</title>
   </book>
  </books>

   <assignment>
   <name>Spell Check</name>
   <number>3</number>
   <keywords>class structure, vectors</keywords>
   <description>Write a program that spell checks a document.</description>
   <url>http://www.cs.rochester.edu/u/www/courses/171/Spring-00/CSC172SP00/PROJ4.htm</url>
   </assignment>

   <description>
Representing data for computer manipulations (e.g., trees, lists, sets, vectors, stacks, and queues) in Java. Analysis of the running times of programs operating on such data structures, and basic techniques for program design, analysis, and proof of correctness (e.g., induction and recursion). Lab required.
   </description>

   <comment>
Second course for majors
   </comment>
</course>

##############################################################
<course>
  <usnewsrank>42</usnewsrank>
  <university>University of Illinois Urbana Champaign</university>
  <name>Data Structures and Software Principles</name>
  <number>CS 225</number>
  <url>http://www-courses.cs.uiuc.edu/~cs225/</url>
  <language>Fortran</language>
  <language>C, C++, Java</language>
  <level>3</level>
  <syllabus>http://www-courses.cs.uiuc.edu/~cs225/cs225/_nav/_framepage/infoPage.html</syllabus>

  <books>
   <book>
   <author>?</author>
   <title>?</title>
   </book>
  </books>

   <assignment>
   <name>Name/Grade Map</name>
   <number>5</number>
   <keywords>map class, AVL trees</keywords>
   <description>This program maps pseudonyms to real names to login names to grades.</description>
   <url>http://www-courses.cs.uiuc.edu/~cs225/cs225/_mps/mp5/mp5.pdf</url>
   </assignment>

   <description>
Data abstractions: elementary data structures: lists, stacks, queues, trees; searching and sorting techniques. Introduction to the principles of software engineering including semester programming project.
   </description>

   <comment>
   </comment>
</course>

##############################################################
<course>
  <usnewsrank>50</usnewsrank>
  <university>University of Texas Austin</university>
  <name>Computer Science II</name>
  <number>CS 315</number>
  <url>http://www.cs.utexas.edu/users/downing/cs315/Syllabus.html</url>
  <language>C++</language>
  <level>2</level>
  <syllabus>http://www.cs.rochester.edu/u/www/courses/171/Spring-00/CSC172SP00/intro.html</syllabus>

  <books>
   <book>
   <author>Carrano, Helman, and Veroff</author>
   <title>Data Abstraction and Problem Solving with C++</title>
   </book>
   <book>
   <author>Schildt</author>
   <title>C++ from the Ground Up</title>
   </book>
   <book>
   <author>Schildt</author>
   <title>STL Programming from the Ground Up</title>
   </book>
  </books>

   <assignment>
   <name>Grade Analysis</name>
   <number>3</number>
   <keywords>vectors</keywords>
   <description>Write a program that runs some rudimentary statistical analysis on grades, and curves them.</description>
   <url>http://www.cs.utexas.edu/users/downing/cs315/Projects/Grading.html</url>
   </assignment>

   <description>
Techniques for program development and debugging, simple data structures, internal searching and sorting, recursion, string processing. Prerequisites: CS 307 with a grade of at least "C".
   </description>

   <comment>
   </comment>
</course>

##############################################################
<course>
  <usnewsrank>58</usnewsrank>
  <university>Clark University</university>
  <name>Introduction to Computer Programming II</name>
  <number>CSci 102</number>
  <url>http://aleph0.clarku.edu/~achou/cs102/</url>
  <language>Java</language>
  <level>2</level>
  <syllabus>http://aleph0.clarku.edu/~achou/cs102/</syllabus>

  <books>
   <book>
   <author>Main</author>
   <title>Data Structures and Other Objects Using Java</title>
   </book>
  </books>

   <assignment>
   <name>Very Long Integers</name>
   <number>3</number>
   <keywords>linked lists, classes, strings</keywords>
   <description>Implement a very large integer class, which stores and adds arbitarily large numbers.</description>
   <url>http://aleph0.clarku.edu/~achou/cs102/assign3.html</url>
   </assignment>

   <description>
A continuation of CSci 101, covering such topics as string manipulation, data files and their processing, pointer variables, and dynamic data structures such as linked lists, stacks, queues, and binary trees. The usage and implementation of recursion also is discussed. Approximately six programming projects are assigned as the laboratory component of the course. These projects entail the design and implementation of programs involving the topics mentioned above.
   </description>

   <comment>
   </comment>
</course>

##############################################################
<course>
  <usnewsrank>13</usnewsrank>
  <university>Rice</university>
  <name>?</name>
  <number>COMP 212</number>
  <url>http://www.owlnet.rice.edu/~comp212/</url>
  <language>Java</language>
  <level>3</level>
  <syllabus>http://www.owlnet.rice.edu/~comp212/00-fall/CS212F00.html</syllabus>

  <books>
   <book>
   <author>?</author>
   <title>?</title>
   </book>
  </books>

   <assignment>
   <name>Hangman</name>
   <number>?</number>
   <keywords>?</keywords>
   <description>?</description>
   <url>http://www.owlnet.rice.edu/~comp212/00-fall/projects/01/hangman.htm</url>
   </assignment>

   <description>
   </description>

   <comment>
   </comment>
</course>

##############################################################
<course>
  <usnewsrank>21</usnewsrank>
  <university>Vanderbilt</university>
  <name>?</name>
  <number>CS 201</number>
  <url>http://cswww.vuse.vanderbilt.edu/~dfisher/courses/cs201/SPRING99/</url>
  <language>C</language>
  <level>3</level>
  <syllabus>http://cswww.vuse.vanderbilt.edu/~dfisher/courses/cs201/SPRING99/syllabus.html</syllabus>

  <books>
   <book>
   <author>?</author>
   <title>?</title>
   </book>
  </books>

   <assignment>
   <name>Postfix Evaluation</name>
   <number>?</number>
   <keywords>?</keywords>
   <description>?</description>
   <url>http://cswww.vuse.vanderbilt.edu/~dfisher/courses/cs201/SPRING99/programs/prog4.html</url>
   </assignment>

   <description>
   </description>

   <comment>
   </comment>
</course>

##############################################################
<course>
  <usnewsrank>29</usnewsrank>
  <university>College of William and Mary</university>
  <name>?</name>
  <number>CS 241</number>
  <url>http://www.cs.wm.edu/~prosl/cs241/home.html</url>
  <language>C++</language>
  <level>1</level>
  <syllabus>http://www.cs.wm.edu/~prosl/cs241/daybyday.html</syllabus>

  <books>
   <book>
   <author>?</author>
   <title>?</title>
   </book>
  </books>

   <assignment>
   <name>?</name>
   <number>?</number>
   <keywords>?</keywords>
   <description>?</description>
   <url>http://www.cs.wm.edu/~prosl/cs241/hw3/hw3f00specs.html</url>
   </assignment>

   <description>
   </description>

   <comment>
   </comment>
</course>

##############################################################
<course>
  <usnewsrank>37</usnewsrank>
  <university>Boston College</university>
  <name>?</name>
  <number>MC 141</number>
  <url>http://www.cs.bc.edu/~borowsky/classes/mc141/</url>
  <language>C</language>
  <level>2</level>
  <syllabus>http://www.cs.bc.edu/~borowsky/classes/mc141/Schedule.html</syllabus>

  <books>
   <book>
   <author>?</author>
   <title>?</title>
   </book>
  </books>

   <assignment>
   <name>Palindrome checking</name>
   <number>?</number>
   <keywords>?</keywords>
   <description>?</description>
   <url>http://www.cs.bc.edu/~borowsky/classes/mc141/hw5.html</url>
   </assignment>

   <description>
   </description>

   <comment>
   </comment>
</course>

##############################################################
<course>
  <usnewsrank>45</usnewsrank>
  <university>University of California Santa Barbara</university>
  <name>?</name>
  <number>CS 20</number>
  <url>http://www.cs.ucsb.edu/~mcguire/courses/20/</url>
  <language>Java</language>
  <level>1</level>
  <syllabus>?</syllabus>

  <books>
   <book>
   <author>?</author>
   <title>?</title>
   </book>
  </books>

   <assignment>
   <name>Stack/Queue</name>
   <number>?</number>
   <keywords>?</keywords>
   <description>?</description>
   <url>http://www.cs.ucsb.edu/~mcguire/courses/20/assts/5.html</url>
   </assignment>

   <description>
   </description>

   <comment>
   </comment>
</course>

##############################################################
<course>
  <usnewsrank> 15 </usnewsrank>
  <university>John Hopkins</university>
  <name>Data Structures</name>
  <number>CS226</number>
  <url>http://www.cs.jhu.edu/~cs226/</url>
  <language>Java</language>
  <level>3</level>
  <syllabus> http://www.cs.jhu.edu/~cs226/ </syllabus>

  <books>
   <book>
     <author>Goodrich and Tamassia</author>
     <title>Data Structures and Algorithms in Java</title>
   </book>
   <book>
     <author>Lewis and Loftus</author>
     <title>Java Software Solutions</title>
   </book>
   <book>
     <author>Arnow and Weiss</author>
     <title>Introduction to Programming using Java</title>
   </book>
  </books>

   <assignment>
      <name>Data Structures</name>
      <number>2</number>
      <keywords>vector, list</keywords>
      <description>In this project, you will construct an implementation of the entire Sequence interface using either an array or linked list (this means that you may not use java Vector or List classes). In particular, if your student number (SSN) ends in an odd digit, you must use an array, and if your student number ends in an even digit, you must use a doubly-linked list.</description>
      <url> http://www.cs.jhu.edu/~cs226/proj2.html</url>
   </assignment>

   <description>
   </description>

   <comment>
      Second course for majors
   </comment>
</course>

##############################################################
<course>
  <usnewsrank>0</usnewsrank>
  <university>Princeton University</university>
  <name>General Computer Science</name>
  <number>COS 126</number>
  <url>http://guest:guest@courseinfo.princeton.edu/courses/COS126_F2000/</url>
  <language>C</language>
  <level>2, irregular</level>
  <syllabus>http://www.cs.princeton.edu/~cs126/syllabus-f00.pdf</syllabus>

  <books>
  <book>
    <author>Sedgewick</author>
    <title>Algorithms in C</title>
  </book>
  <book>
    <author>King</author>
    <title>C Programming: A Modern Approach</title>
  </book>
  </books>

  <assignment>
    <name>A Pseudo-Random Walk on Wall Street</name>
    <number>5</number>
    <keywords>assebly code, machine code, random walk</keywords>
    <description>Use TOY assembly language to simulate stock prices over time.</description>
    <url>http://www.cs.princeton.edu/~cs126/assignments/toy.html</url>
  </assignment>

  <description>
An introductory survey for students in the sciences and engineering. Hardware and software systems. Programming in C and other languages. Introduction to algorithms and data structures. Applications to solving scientific problems. Fundamentals of the theory of computation.
  </description>
  <comment>
First course for majors, combines CS1, CS2, plus covers lower-level stuff (circuits, grammar, Turing machines, assembly)
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>8</usnewsrank>
  <university>Dartmouth College</university>
  <name>Data Structures and Programming</name>
  <number>CS 15</number>
  <url>http://www.cs.dartmouth.edu/~farid/teaching/cs15/</url>
  <language>Java</language>
  <level>3</level>
  <syllabus>http://www.cs.dartmouth.edu/~farid/teaching/cs15/</syllabus>

  <books>
  <book>
    <author>Weiss</author>
    <title>Data Structures and Algorithm Analysis in Java</title>
  </book>
  </books>

  <assignment>
    <name>Midterm Practice</name>
    <number>4</number>
    <keywords>Big-O, Trees, Stacks</keywords>
    <description>Various word problems</description>
    <url>http://www.cs.dartmouth.edu/~farid/teaching/cs15/homework4.html</url>
  </assignment>

  <description>
This course continues the study of computer science begun in Computer Science 5. It is organized around the ideas of data abstraction and abstract data types. Students will learn ways to represent lists, sets, dictionaries, priority queues, and other structures inside of the computer. They will also study design tradeoffs (space, time, operations allowed) and reasons for choosing one data structure over another. Specific representations include linked structures, binary trees, balanced trees, and hashing. More advanced sorting methods than were covered in Computer Science 5 will also be included. Students will implement programs that make use of the data structures and algorithms and will be assigned written work.
  </description>
</course>

##############################################################
<course>
  <usnewsrank>16</usnewsrank>
  <university>Washington University in St. Louis</university>
  <name>Computer Science II</name>
  <number>CS 102G</number>
  <url>http://www.cs.wustl.edu/~sck/102/current-semester/</url>
  <language>Java</language>
  <level>1, irregular</level>
  <syllabus>http://www.cs.wustl.edu/~sck/102/current-semester/cal.html</syllabus>

  <books>
  <book>
    <author>Horstmann and Cornell</author>
    <title>Core Java, Volumes I and II</title>
  </book>
  </books>

  <assignment>
    <name>A Vending Machine Simulator using FSM Controller</name>
    <number>4</number>
    <keywords>code re-use, finite state machine, class design</keywords>
    <description>Graphically simulate a vending machine--do things depending on button press</description>
    <url>http://www.cs.wustl.edu/~sck/102/current-semester/lab/lab2c/</url>
  </assignment>

  <description>
CS 102 builds on CS 101's introduction to software systems as collections of communicating components. CS 102 emphasizes more sophisticated uses of object-oriented concepts (inheritance, polymorphism, method overloading, and multiple inheritance of interfaces) and techniques for building systems of multiple interacting components. Representation invariants, loop invariants, and exception handling are used as techniques for writing correct and robust programs. Additional algorithms and data structures are presented. An introduction to file I/O, string parsing, virtual machine and memory models, graphics, user interfaces, threads, concurrency, synchronization, and network programming is provided. Concepts and skills are mastered through programming exercises, many of which employ graphics to enhance conceptual understanding. Java, an object-oriented programming language, is used as the vehicle of exploration.
  </description>
  <comment>
This course strongly emphasizes state machines and the inner-workings of Java.
  </comment>
</course>

##############################################################
<course>
   <usnewsrank>24</usnewsrank>
   <university>UCLA</university>
   <name>Introduction to Computer Science II</name>
   <number>CS 32</number>
   <url>http://www.cs.ucla.edu/classes/spring00/cs32/</url>
   <language>C++</language>
   <level>3</level>
   <syllabus>http://www.cs.ucla.edu/classes/spring00/cs32/syl.pdf</syllabus>

  <books>
   <book>
      <author>Weiss</author>
      <title>Algorithms, Data Structures, and Problem Solving with C++</title>
   </book>
  </books>

   <assignment>
      <name>Scientific Calculator Simulator</name>
      <number>2</number>
      <keywords>stack, classes</keywords>
      <description>Simulate the functions of a fairly complex scientific calculator (must support 2 line display, parathases, value memories, smart display of either integer, decimal, or sci. notation, must allow user to edit previous entry lines before evaluating.)</description>
      <url>http://www.cs.ucla.edu/classes/spring00/cs32/pr2.pdf</url>
   </assignment>

   <description>CS32 covers object-oriented data structures and software development, algorithm analysis, and advanced problem-solving using the C++ language. It is a follow-on to CS31 and requires strong previous knowledge of C++ and object-oriented techniques.</description>
   <comment>Requires use of Visual C++ for Windows</comment>
</course>

##############################################################
<course>
   <usnewsrank>32</usnewsrank>
   <university>New York University</university>
   <name>Introduction to Computer Science II</name>
   <number>V22.0102</number>
   <url>http://cs.nyu.edu/courses/spring00/V22.0102-002/index.html</url>
   <language>Pascal, Java</language>
   <level>2</level>
   <syllabus>http://cs.nyu.edu/courses/spring00/V22.0102-002/syllabus.html</syllabus>

  <books>
   <book>
      <author>Kruse</author>
      <title>Data Structures and Program Design</title>
   </book>
  </books>

   <assignment>
      <name>Intro. to Huffman Compression</name>
      <number>3</number>
      <keywords>linked lists, compression</keywords>
      <description>Use linked lists to compress a file. Later the same code will be modified to use binary trees in order to do true Huffman compression.</description>
      <url>http://cs.nyu.edu/courses/spring00/V22.0102-002/hw3a.html</url>
   </assignment>

   <description>The design of data structures for representing information in computer memory. Topics include: Abstract data types and their implementations; Stacks; Queues; Priority queues; Dictionaries; Sorting; Recursion.</description>
   <comment>Strong knowledge and experience with Pascal is a prerequisite. Students with poor grades (worse than a C) in the CS1 course are not allowed to take this class.</comment>
</course>

##############################################################
<course>
   <usnewsrank>40</usnewsrank>
   <university>University of California Davis</university>
   <name>Data Structures and Programming</name>
   <number>ECS 110</number>
   <url>http://muldoon.cipic.ucdavis.edu/classes/ecs110-s96/ecs110.html</url>
   <language>C++</language>
   <level>3</level>
   <syllabus>http://muldoon.cipic.ucdavis.edu/classes/ecs110-s96/ecs110.html</syllabus>

  <books>
   <book>
      <author>Horowitz, Sahni and Mehta</author>
      <title>Fundamentals of Data Structures in C++</title>
   </book>
  </books>

   <assignment>
      <name>Subway Map</name>
      <number>4</number>
      <keywords>graphs</keywords>
      <description>Use a graph to find all possible subway routes between two points using no segment (between two points) more than once.</description>
      <url>http://graphics.cs.ucdavis.edu/courses/ecs110-s96/Assignment-4/Assignment-4.html</url>
   </assignment>

   <description>Catalog Description: Design and analysis of data structures for a variety of applications. Trees, heaps, searching, sorting, hashing, graphs. Extensive programming. Goals: By the time students finish, they should have learned to think clearly about and solve complex and poorly-defined programming tasks. Students are able to (a) find appropriate abstractions to solve a complex problem (b) choose appropriate data structures and algorithms (c) analyze simple algorithms and discuss trade-offs among data structures (d) get it all working. Expanded Course Description: Analysis of algorithms. Strings. Stacks. Queues. Trees. Tree traversals. Binary trees. Expression trees. Binary arch trees. Amortized analysis. Hashing. Universal hashing. Heaps. Sorting algorithms. Graphs. Depth-first Search. Minimum spanning trees. Shortest paths. Union/Find data structure. Splay trees. Digital search trees. Tries. Huffman codes. Branch-and-Bound. If time permits, any of the following: Skip lists, B-trees, Fibonacci heaps.</description>
   <comment>Requires grade better than C in CS1 course.</comment>
</course>

##############################################################
<course>
   <usnewsrank>48</usnewsrank>
   <university>Pepperdine University</university>
   <name>Computer Science II</name>
   <number>COSC 221</number>
   <url>http://www.pepperdine.edu/seaver/natsci/COMP%20SCI/cosc221.htm</url>
   <language>Component Pascal</language>
   <level>2</level>
   <syllabus>http://www.pepperdine.edu/seaver/natsci/COMP%20SCI/cosc221.htm</syllabus>

  <books>
   <book>
      <author>Warford</author>
      <title>Programming with BlackBox (unpublished --online at "ftp://ftp.pepperdine.edu/pub/compsci/prog-bbox/")</title>
   </book>
  </books>

  <assignment>
    <name>?</name>
    <number>?</number>
    <keywords>?</keywords>
    <description>?</description>
    <url>?</url>
  </assignment>

   <description>Introduction to object-oriented programming. Recursion, basic algorithms, array searching and sorting. Dynamic storage allocation, pointer types, linked lists and binary search trees as abstract data types. Classes, objects, abstract classes, inheritance and polymorphism, linked lists and binary trees as classes. </description>
   <comment>Follow-up course (CoSc 320) it their pure data structures course and it addresses the more advance issues.</comment>
</course>

##############################################################
<course>
   <usnewsrank>56</usnewsrank>
   <university>Catholic University of America</university>
   <name>Computer Programming II</name>
   <number>CSC 114</number>
   <url>http://burns.ee.cua.edu/~tvedt/csc114/syllabus.htm</url>
   <language>C++</language>
   <level>1</level>
   <syllabus>http://burns.ee.cua.edu/~tvedt/csc114/syllabus.htm</syllabus>

  <books>
   <book>
      <author>Deitel and Deitel</author>
      <title>C++ How to Program</title>
   </book>
  </books>

  <assignment>
    <name>?</name>
    <number>?</number>
    <keywords>?</keywords>
    <description>?</description>
    <url>?</url>
  </assignment>

   <comment>Two classes cover same material in different languages (C++ in 114, Java in 124) Sent email to apparent professor of class, John D. Tvedt. No responce yet.</comment>
</course>

##############################################################
<course>
    <usnewsrank>0</usnewsrank>
    <university>Amherst College</university>
    <name>Data Structures</name>
    <number>CS 21</number>
    <url>http://www.cs.amherst.edu/~lam/cs21syll.html</url>
    <language>Java</language>
    <level>?</level>
    <syllabus>http://www.cs.amherst.edu/~lam/cs21syll.html</syllabus>

  <books>
    <book>
        <author>Goodrich and Tamassia</author>
        <title>Data Structures and Algorithms in Java (Second Edition) </title>
    </book>
  </books>

  <assignment>
    <name>?</name>
    <number>?</number>
    <keywords>?</keywords>
    <description>?</description>
    <url>?</url>
  </assignment>

    <description>A fundamental problem in computer science is that of organizing data so that it can be used effectively. This course introduces basic data structures and their applications. Major themes are the importance of abstraction in program design and the separation of specification and implementation. Program correctness and algorithm complexity are also considered. Data structures for lists, stacks, queues, trees, sets and graphs are discussed. This course will provide advanced programming experience.</description>
    <comment>Contacted professor about accessing secured files (detailed syllabus, assignments).</comment>
</course>

##############################################################
<course>
    <usnewsrank>8</usnewsrank>
    <university>Middlebury College</university>
    <name>Data Structures</name>
    <number>CX 214</number>
    <url>http://www.middlebury.edu/~schar/Courses/cx214.S00/</url>
    <language>Java</language>
    <level>3</level>
    <syllabus>http://www.middlebury.edu/~schar/Courses/cx214.S00/</syllabus>

  <books>
    <book>
        <author>Bailey</author>
        <title>Java Structures</title>
    </book>
  </books>

    <assignment>
        <name>Linked list problems</name>
        <number>4</number>
        <keywords>linked list</keywords>
        <description>Various problems: test, traverse, manipulate, sort lists</description>
        <url>http://www.middlebury.edu/~schar/Courses/cx214.S00/hw/hw4/</url>
    </assignment>

    <description>This course stresses ideas and structures helpful in designing and implementing algorithms, especially for solving large or complex problems. Important concepts in this context are data abstraction and modularity, which should be familiar from CX 121. In this course, we will introduce many important data structures such as vectors, lists, stacks, queues, trees, and graphs, and discuss various ways to implement these structures. We will also introduce the concept of algorithmic complexity, and compare the different implementations terms of time and space efficiency. Programming will be done in Java; familiarity with Java and Unix is assumed.</description>
</course>

##############################################################
<course>
    <usnewsrank>16</usnewsrank>
    <university>Vassar College</university>
    <name>Computer Science II</name>
    <number>CMPU 102</number>
    <url>http://www.cs.vassar.edu/~cs102/index.html</url>
    <language>C++</language>
    <level>3</level>
    <syllabus>http://www.cs.vassar.edu/~cs102/index.html#schedule</syllabus>

  <books>
    <book>
        <author>Dale, Weems, and Headington</author>
        <title>Programming in C++</title>
    </book>
  </books>

    <assignment>
        <name>NASA Database</name>
        <number>4</number>
        <keywords>database, parallel arrays</keywords>
        <description>Make a database of parts for the space shuttle.</description>
        <url>http://www.cs.vassar.edu/~cs102/A4/A4.html</url>
    </assignment>

    <description>Locked inside a corrupt PDF file</description>
</course>

##############################################################
<course>
  <usnewsrank>24</usnewsrank>
  <university>Macalester College</university>
  <name>Computer Science II</name>
  <number>CS 24</number>
  <url>?</url>
  <language>?</language>
  <level>3</level>
  <syllabus>?</syllabus>

  <books>
  <book>
    <author>?</author>
    <title>?</title>
  </book>
  </books>

  <assignment>
    <name>?</name>
    <number>?</number>
    <keywords>?</keywords>
    <description>?</description>
    <url>?</url>
  </assignment>

    <description>This course continues the presentation of the fundamental concepts of computer science begun in Computer Science 23. It introduces the procedural model of computation, object-oriented design, the theory of types, problem specification, formal specifications, and will focus more formally on analysis of algorithms for efficiency and correctness. The course will include a study of advanced data types such as lists, trees, graphs, and sets. Students will study the advantages and disadvantages of different data structures, and will explore their applications across computer science.</description>
    <comment>Contacted professor. No reply yet.</comment>
</course>

##############################################################
<course>
    <usnewsrank>32</usnewsrank>
    <university>Franklin And Marshall</university>
    <name>Data Structures</name>
    <number>CPS 260</number>
    <url>http://www.fandm.edu/departments/ComputerScience/curriculum/CPS260.html</url>
    <language>C, C++, Java</language>
    <level>3</level>
    <syllabus>http://www.fandm.edu/departments/ComputerScience/curriculum/CPS260/syllabus.html</syllabus>

  <books>
    <book>
        <author>Bailey</author>
        <title>Java Structures</title>
    </book>
    <book>
        <author>Pothering and Naps</author>
        <title>Introduction to Data Structures and Algorithm Analysis with C++</title>
    </book>
  </books>

  <assignment>
    <name>?</name>
    <number>?</number>
    <keywords>?</keywords>
    <description>?</description>
    <url>?</url>
  </assignment>

    <description>from aces</description>
    <comment>Students choose prefered language, use appropriate book.</comment>
    <comment>Students use CodeWarrior for Macintosh.</comment>
    <comment>Assignment not online.</comment>
</course>

##############################################################
<course>
  <usnewsrank>40</usnewsrank>
  <university>Occidontal College</university>
  <name>Introduction to Computer Science</name>
  <number>CS 211</number>
  <url>?</url>
  <language>?</language>
  <level>?</level>
  <syllabus>?</syllabus>

  <books>
  <book>
    <author>?</author>
    <title>?</title>
  </book>
  </books>

  <assignment>
    <name>?</name>
    <number>?</number>
    <keywords>?</keywords>
    <description>?</description>
    <url>?</url>
  </assignment>

    <description>Programming with linked data structures, including stacks, queues, trees and linked lists. Object-oriented programming. Programming methodology. Computer systems. Ethics in computing.</description>
    <comment>Apparent professor contacted.</comment>
</course>

##############################################################
<course>
    <usnewsrank>48</usnewsrank>
    <university>Skidmore College</university>
    <name>Introduction to Computer Science II</name>
    <number>CS 206</number>
    <url>http://www.skidmore.edu/~pvonk/cs206/</url>
    <language>C++</language>
    <level>1</level>
    <syllabus>http://www.skidmore.edu/~pvonk/cs206/calendar.htm</syllabus>

  <books>
    <book>
      <author>Carrano, Helman, and Veroff</author>
      <title>Data Abstraction and Problem Solving with C++ </title>
    </book>
  </books>

    <assignment>
        <name>Workign with Queues</name>
        <number>1</number>
        <keywords>queue, arrays</keywords>
        <description>Implement and mess arounf with queues.</description>
        <url>http://www.skidmore.edu/~pvonk/cs206/calendars/proj2.pdf</url>
    </assignment>

    <description>Continuation of CS 106: study of recursion, pointers, development strategies for large software projects, and introduction to data structures, analysis of algorithms, and program verification.</description>
    <comment>Visual C++ for Windows used.</comment>
    <comment>Data Structures delt with in depth in later course, CS 321 (http://www.skidmore.edu/~adean/cs3210009/homepage.html)</comment>
    <comment>Slow server!</comment>
</course>

##############################################################
<course>
    <usnewsrank>n/a</usnewsrank>
    <university>Kalamazoo College, MI</university>
    <name>Data Structures</name>
    <number>CS 210</number>
    <url>http://max.cs.kzoo.edu/cs210/index.shtml</url>
    <language>Java</language>
    <level>3</level>
    <syllabus>http://max.cs.kzoo.edu/cs210/syllabus.shtml</syllabus>

  <books>
    <book>
        <author>Bailey</author>
        <title>Java Structures</title>
    </book>
  </books>

    <assignment>
        <name>Linked Lists: Bad News Bearers</name>
        <number>5</number>
        <keywords>circular linked list, pointers</keywords>
        <description>Play with different implementations of lists.</description>
        <url>http://max.cs.kzoo.edu/cs210/Labs/LLists/LListsPP.html</url>
    </assignment>

    <description>CS 210 is a continuation of Introduction to Programming (CS 110), and provides students an opportunity to further develop and refine their programming skills.  In particular, the emphasis of this course is on the organization of information, the implementation of common data structures such as lists, stacks, queues, trees, and graphs, and techniques of data abstraction, including encapsulation and inheritance.  We will also explore recursion and the close relationship between data structures and algorithms.</description>

    <comment>This is actually the 3rd course for majors, but basically lines up as CS2.</comment>
    <comment>CodeWarrior used.</comment>
</course>

##############################################################
<course>
  <usnewsrank>6</usnewsrank>
  <university>Carleton</university>
  <name>?</name>
  <number>?</number>
  <url>?</url>
  <language>C++</language>
  <level>3</level>
  <syllabus>?</syllabus>

  <books>
  <book>
    <author>?</author>
    <title>?</title>
  </book>
  </books>

  <assignment>
    <name>?</name>
    <number>?</number>
    <keywords>?</keywords>
    <description>Two assignments: polynomial class that privately inherits from a linked-list based queue and postfix evaluation, but implement stacks and queues too</description>
    <url>http://turing.mathcs.carleton.edu/faculty/jgoldfea/cs127/spring00/assignment4.html</url>
  </assignment>

  <description>
  </description>

  <comment>
Spring 2000
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>14</usnewsrank>
  <university>Grinnell</university>
  <name>?</name>
  <number>CSC152</number>
  <url>http://www.cs.grinnell.edu/~rebelsky/Courses/CS152/2000F/index.html</url>
  <language>Java</language>
  <level>3</level>
  <syllabus>?</syllabus>

  <books>
  <book>
    <author>?</author>
    <title>?</title>
  </book>
  </books>

  <assignment>
    <name></name>
    <number>?</number>
    <keywords>?</keywords>
    <description>graphing calculator that deals with fractions</description>
    <url>http://www.cs.grinnell.edu/~rebelsky/Courses/CS152/2000F/Homeworks/hw.03.html</url>
  </assignment>

  <description>
  </description>

  <comment>
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>22</usnewsrank>
  <university>Oberlin</university>
  <name>?</name>
  <number>CS 151</number>
  <url>http://exciton.cs.oberlin.edu/cs151/</url>
  <language>?</language>
  <level>3</level>
  <syllabus>?</syllabus>

  <books>
  <book>
    <author>?</author>
    <title>?</title>
  </book>
  </books>

  <assignment>
    <name>Airport simulation</name>
    <number>?</number>
    <keywords>?</keywords>
    <description>?</description>
    <url>http://exciton.cs.oberlin.edu/cs151/labs/lab06/default.htm</url>
  </assignment>

  <description>
Gets to trees, hash tables and los of OO stuff
  </description>

  <comment>
Link is to spring 2000 version
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>30</usnewsrank>
  <university>Colorado College</university>
  <name>?</name>
  <number>MA222</number>
  <url>http://faculty1.coloradocollege.edu/~sjanke/MA222/</url>
  <language>Pascal</language>
  <level>?</level>
  <syllabus>?</syllabus>

  <books>
  <book>
    <author>?</author>
    <title>?</title>
  </book>
  </books>

  <assignment>
    <name>?</name>
    <number>?</number>
    <keywords>?</keywords>
    <description>Queueing simulation of a xerox machine (implement the queue)</description>
    <url>http://faculty1.coloradocollege.edu/~sjanke/MA222/assignments.html</url>
  </assignment>

  <description>
  </description>

  <comment>
This offering is a five week course that does lists to NP-completeness!!
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>38</usnewsrank>
  <university>Bard College</university>
  <name>?</name>
  <number>CMSC 142</number>
  <url>http://inside.bard.edu/~mcgrail/courses/csII/</url>
  <language>Java</language>
  <level>?</level>
  <syllabus>?</syllabus>

  <books>
  <book>
    <author>Corman, et al</author>
    <title>Big White book</title>
  </book>
  </books>

  <assignment>
    <name>?</name>
    <number>?</number>
    <keywords>?</keywords>
    <description>?</description>
    <url>?</url>
  </assignment>

  <description>
  </description>

  <comment>
From Spring semester 2000 we find the assingments do not track the syllabus
http://inside.bard.edu/~mcgrail/courses/csII/about trees, graphs, etc.
but the last assignment on the web is about priority queues. And
it is simply "build one, make it implement a todo list"

Does not look like it gets very far in use of data structures.
The assignment below is bubble sort:
http://inside.bard.edu/~mcgrail/courses/csII/assignment5.html

Also CMSC 201, "linked lists, stacks, queues, trees,
hashtables, graphs", but no web page.
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>46</usnewsrank>
  <university>Beloit College</university>
  <name>Data Structures and Objects</name>
  <number>Computer Science 195</number>
  <url>http://cs.beloit.edu/~chavey/CS195/</url>
  <language>C++, Java?</language>
  <level>2</level>
  <syllabus>?</syllabus>

  <books>
  <book>
    <author>?</author>
    <title>?</title>
  </book>
  </books>

  <assignment>
    <name>Maze solving</name>
    <number>4</number>
    <keywords>?</keywords>
    <description>?</description>
    <url>http://cs.beloit.edu/~chavey/CS195/Program4.html</url>
  </assignment>

  <description>
  </description>

  <comment>
trees, priority queues, tables,
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>57</usnewsrank>
  <university>College of Wooster</university>
  <name>Computer Programming II</name>
  <number>CS 152</number>
  <url>http://www.wooster.edu/math/</url>
  <language>?</language>
  <level>1</level>
  <syllabus>?</syllabus>

  <books>
  <book>
    <author>?</author>
    <title>?</title>
  </book>
  </books>

  <assignment>
    <name>?</name>
    <number>?</number>
    <keywords>?</keywords>
    <description>?</description>
    <url>?</url>
  </assignment>

  <description>
  </description>

  <comment>
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>65</usnewsrank>
  <university>Knox</university>
  <name>?</name>
  <number>CS 205</number>
  <url>http://www.knox.edu/cs205/</url>
  <language>C++</language>
  <level>3</level>
  <syllabus>?</syllabus>

  <books>
  <book>
    <author>?</author>
    <title>?</title>
  </book>
  </books>

  <assignment>
    <name>?</name>
    <number>?</number>
    <keywords>?</keywords>
    <description>Simulate ants gathering food. Use arrays but can be made more complex.</description>
    <url>http://www.knox.edu/cs205/homework03.html</url>
  </assignment>

  <description>
  </description>

  <comment>
  </comment>
</course>

##############################################################
<course>
  <usnewsrank>?</usnewsrank>
  <university>?</university>
  <name>?</name>
  <number>?</number>
  <url>?</url>
  <language>?</language>
  <level>?</level>
  <syllabus>?</syllabus>

  <books>
  <book>
    <author>?</author>
    <title>?</title>
  </book>
  </books>

  <assignment>
    <name>?</name>
    <number>?</number>
    <keywords>?</keywords>
    <description>?</description>
    <url>?</url>
  </assignment>

  <description>
  </description>

  <comment>
  </comment>
</course>

</courses>

