16.01.2015 Views

CS2013-final-report

CS2013-final-report

CS2013-final-report

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Additional Comments<br />

We instituted a major revision of the undergraduate CS curriculum at Stanford in 2008. Since<br />

then we have continued to make minor revisions in the curriculum, but do not anticipate making<br />

another significant change in the foreseeable future. In performing the mapping of our<br />

curriculum against the <strong>CS2013</strong> guidelines, we realized that there are a few Core-Tier1 learning<br />

outcomes that we currently do not cover in our typical program (hence the 98% coverage of<br />

Core-Tier1, as opposed to 100%). We believe that we can cover the additional 2% of Core-Tier1<br />

learning outcomes through minor, localized changes in existing courses, so no significant<br />

curricular changes are currently planned.<br />

Appendix: Information on Individual Courses<br />

Below is the detailed course information for the courses in the sample program described above.<br />

The full set of CS courses offered at Stanford is too large to include here, but is available in the<br />

university online course catalog. Courses are listed below in numeric order. Note that numeric<br />

order does necessarily reflect the order in which students would likely take these courses. For<br />

example, CS103 has CS106A—a higher numbered course—as a prerequisite.<br />

CS 103: Mathematical Foundations of Computing<br />

Mathematical foundations required for computer science, including propositional predicate logic,<br />

induction, sets, functions, and relations. Formal language theory, including regular expressions,<br />

grammars, finite automata, Turing machines, and NP-completeness. Mathematical rigor, proof<br />

techniques, and applications. Prerequisite: 106A or equivalent.<br />

URL: http://www.stanford.edu/class/cs103/<br />

(Also listed as a course exemplar in <strong>CS2013</strong>)<br />

CS 106A: Programming Methodology<br />

Introduction to the engineering of computer applications emphasizing modern software<br />

engineering principles: object-oriented design, decomposition, encapsulation, abstraction, and<br />

testing. Uses the Java programming language. Emphasis is on good programming style and the<br />

built-in facilities of the Java language. No prior programming experience required.<br />

URL: http://www.stanford.edu/class/cs106a/<br />

CS 106B: Programming Abstractions<br />

Abstraction and its relation to programming. Software engineering principles of data abstraction<br />

and modularity. Object-oriented programming, fundamental data structures (such as stacks,<br />

queues, sets) and data-directed design. Recursion and recursive data structures (linked lists, trees,<br />

graphs). Introduction to time and space complexity analysis. Uses the programming language<br />

C++ covering its basic facilities. Prerequisite: 106A or equivalent.<br />

URL: http://www.stanford.edu/class/cs106b/<br />

- 499 -

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!