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.

CSC 161: Imperative Problem Solving and Data Structures, Grinnell<br />

College<br />

Grinnell, Iowa USA<br />

Henry M. Walker<br />

walker@cs.grinnell.edu<br />

http://www.cs.grinnell.edu/~walker/courses/161.sp12/<br />

Knowledge Areas that contain topics and learning outcomes covered in the course<br />

Knowledge Area<br />

Total Hours of Coverage<br />

Software Development Fundamentals (SDF) 27<br />

Programming Languages (PL) 9<br />

Architecture and Organization (AR) 3<br />

Software Engineering (SE) 3<br />

Social Issues and Professional Practice (SP) 2<br />

Algorithms and Complexity (AL) 1<br />

Computational Science (CN) 1<br />

Information Assurance and Security (IAS) 1<br />

Intelligent Systems (IS) 1<br />

Brief description of the course’s format and place in the undergraduate curriculum<br />

This course is the second in Grinnell's three-course, multi-paradigm introductory CS sequence. Many students are<br />

first- or second-year students who are exploring computer science as a possible major (after becoming interested in<br />

the subject from the first course). Other students may enroll in the course to broaden their liberal arts background<br />

or to learn elements of imperative problems solving and C to support other work in the sciences or engineering.<br />

As with Grinnell's other introductory courses, each class session meets in a lab, and work flows seamlessly<br />

between lecture and lab-based activities. Work generally is divided into eight 1.5-2 week modules. Each module<br />

begins with a lecture giving an overview of topics and demonstrating examples. Students then work collaborative<br />

in pairs on 3-5 labs, and the pairs change for each module. Each module concludes with a project that integrates<br />

topics and applies the ideas to an interesting problem.<br />

Course description and goals<br />

This course utilizes robotics as an application domain in studying imperative problem solving, data representation,<br />

and memory management. Additional topics include assertions and invariants, data abstraction, linked data<br />

structures, an introduction to the GNU/Linux operating system, and programming the low-level, imperative<br />

language C.<br />

Course topics<br />

This course explores elements of computing that have reasonably close ties to the architecture of computers,<br />

compilers, and operating systems. The course takes an imperative view of problem solving, supported by<br />

programming in the C programming language. Some topics include:<br />

• imperative problem solving: top-down design, common algorithms, assertions, invariants<br />

• C programming: syntax and semantics, control structures, functions, parameters, macro processing,<br />

compiling, linking, program organization<br />

• concepts with data: data abstraction, integer and floating-point representation, string representation,<br />

arrays, unions, structures, linked list data structures, stacks, and queues<br />

• machine-level issues: data representation, pointers, memory management<br />

• GNU/Linux operating system: commands, bash scripts, software development tools<br />

- 458 -

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

Saved successfully!

Ooh no, something went wrong!