16.01.2015 Views

CS2013-final-report

CS2013-final-report

CS2013-final-report

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Prospective computer science majors, in particular, can benefit from learning to program in the context of<br />

scientific applications. A computer scientist needs the same basic background in the scientific method and the<br />

same exposure to the role of computation in science as does a biologist, an engineer, or a physicist.<br />

Indeed, our interdisciplinary approach enables us to teach prospective computer science majors and prospective<br />

majors in other fields of science and engineering in the same course. We cover the material prescribed by CS1, but<br />

our focus on applications brings life to the concepts and motivates students to learn them. Our interdisciplinary<br />

approach exposes students to problems in many different disciplines, helping them to more wisely choose a major.<br />

Our reach has expanded beyond the sciences and engineering, to the extent that we are one of the most popular<br />

science courses taken by students in the humanities and social sciences, as well.<br />

Body of Knowledge coverage<br />

KA Knowledge Unit Topics Covered Hours<br />

SDF<br />

Algorithms and Design<br />

The concept and properties of algorithms.<br />

The role of algorithms in the problem-solving process.<br />

Problem-solving strategies. Implementation of algorithms.<br />

Fundamental design concepts and principles<br />

2<br />

SDF<br />

Fundamental<br />

Programming Concepts<br />

Basic syntax and semantics of a higher-level language.<br />

Variables and primitive data types. Expressions and<br />

assignments. I/O. Conditional and iterative control structures<br />

3<br />

SDF<br />

Fundamental Data<br />

Structures<br />

Arrays, stacks, queues, priority queues, strings, references,<br />

linked structures, resizable arrays. Strategies for choosing the<br />

appropriate data structure.<br />

3<br />

SDF<br />

Development Methods<br />

Program correctness. Modern programming environments.<br />

Debugging strategies.<br />

Documentation and program style.<br />

3<br />

PL<br />

Object-Oriented<br />

programming<br />

Object-oriented design, encapsulation, iterators. 2<br />

PL<br />

Basic Type Systems<br />

Primitive types, reference types. Type safety, static typing.<br />

Generic types.<br />

2<br />

AL<br />

Basic Analysis<br />

Asymptotic analysis, empirical measurements. Differences<br />

among best, average, and worst case behaviors of an algorithm.<br />

Complexity classes, such as constant, logarithmic, linear,<br />

quadratic, and exponential. Time and space trade-offs in<br />

algorithms.<br />

2<br />

AL<br />

Algorithmic Strategies<br />

Brute-force, greedy, divide-and-conquer, and recursive<br />

algorithms. Dynamic programming, reduction.<br />

2<br />

- 445 -

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

Saved successfully!

Ooh no, something went wrong!