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.

CpSc 215: Software Development Foundations, Clemson University<br />

School of Computing, Clemson, SC USA 29634<br />

Jason O. Hallstrom<br />

Cathy Hochrine<br />

Murali Sitaraman<br />

Jacob Sorber<br />

{jasonoh,chochri,murali,jsorber}@clemson.edu<br />

http://people.cs.clemson.edu/~jasonoh/courses/cpsc_215_fall_2012/<br />

http://www.cs.clemson.edu/resolve/teaching/teaching.html<br />

www.cs.clemson.edu/resolve/<br />

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

Knowledge Area<br />

Software Development Fundamentals (SDF) 18<br />

Programming Languages (PL) 12<br />

Software Engineering (SE) 12<br />

Total Hours of Coverage<br />

Where does the course fit in your curriculum<br />

CpSc 215 is a required course taken by all students pursuing a B.A. or B.S. in Computer Science, or a B.S. in<br />

Computer Information Systems. It is typically taken in the first or second semester of the sophomore year. On<br />

average, two sections of 25-30 students each take the course each semester. Students must receive a ‘C’ or better in<br />

CpSc 102 or CpSc 210 prior to taking the course. These courses offer a foundation in basic computational problem<br />

solving using the C programming language, with a brief introduction to object-oriented principles in C++. CpSc 215<br />

serves as a pre-requisite for the majority of the upper-level courses in the computing curriculum at Clemson.<br />

What is covered in the course<br />

Major topics covered, in their approximate order of coverage, include the following:<br />

• Java Basics: Introduction, interpreted versus compiled languages<br />

• Java Basics: Packages, classpaths, the Java compiler<br />

• Java Basics: The Eclipse integrated development environment<br />

• Java Basics: Parameter passing, shallow versus deep copying, value versus reference semantics<br />

• Java Classes: Fields, methods, accessibility modifiers<br />

• Java Classes: Constructors, overloading<br />

• Java Classes: Static fields, methods, initializers<br />

• Design Patterns: Introduction, historical context<br />

• Design Patterns: Singleton, Flyweight<br />

• Java Libraries: java.io.*, java.util.*, java.net.*, java.math.*<br />

• Java Interfaces: Declaring, implementing, using as types<br />

• Abstract Data Structures: Stacks, queues, sets<br />

• Analytical Reasoning: Introduction to interface contracts<br />

• Analytical Reasoning: Review of basic mathematical types (integers, tuples, strings, sets)<br />

• Analytical Reasoning: Formal contract specifications<br />

• Abstract Data Structures: Partial maps (dictionaries), linked-lists<br />

• Analytical Reasoning: Contract-based Testing and Tracing<br />

• Design Patterns: Decorator<br />

- 394 -

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

Saved successfully!

Ooh no, something went wrong!