09/09/2014 First lecture 12:20-1:10pm in Engineering
Building Room 304
development requires skills beyond just programming. Software
artifacts concurrently interact with both the underlying systems
they execute on, as well as other software systems, through various
APIs. This course covers key concepts in the design and
implementation of complex software systems that are potentially
multi-threaded, networked, distributed, etc. The course will
introduce students to the basics of software design using a
combination of lectures, practical lab work, and assignments.
The course covers systems aspects of software design in multiple
environments, as well as software lifecycle models and testing
methodologies. Major topics include:
- UNIX environments
- System organization and memory management
- Scripting Languages
- Systems Languages
- Software Development Tools
- Testing Methodologies
- Software Lifecycles
- Distributed and Cloud Computing
- Storage Systems
A pdf version of the
syllabus for the course is available here.
The prerequisites for the course are either ECE 242 (Data
Structures and Algorithms) or CMPSCI
187 (Programming with Data Structures). There is no
required textbook for the course. All material on tests and projects will be
covered in the class.
The class will
consist of two lectures on MWF from 12:20-1:10pm in Engineering
Building I room 304. Room 307 is also reserved for this
class on Monday from 12:20pm- 2:15pm, Tuesday from 10am-11am,
and Friday from 11:15am-1:10pm. We might hold class in the lab
on some Mondays and Fridays.
Course grades will be
determined based on the following breakdown:
- 2 Exams: 40%
Please note that all projects and assignments are due by midnight
(11:59pm) on the due date.
Academic Honesty Policy
submitted must be your own (or your groups)
- Exams are closed-book and no outside help is allowed. Any cheating on an exam
will result in an F for the course.
- You may discuss general
aspects of assignments and projects with other students.
However, any written work (or your group's work) must be your
own. Copying is not allowed, and collaboration so close that it looks like copying is not
allowed. (In general, if I get two identical submissions I will
accept neither of them (i.e., both get F's) and I will report
this action to the Academic Honesty Board.) Please contact me if
you have any questions. A good practice is to divide your
work into an "ideas phase" where you collaborate and a "writeup
phase" where you work alone -- enter the writeup phase with
notes, but not written solutions.
- If you make use of a printed or on-line source for
assignments, other than specific course materials such as the
textbook or web site, please cite it in your writeup. Note that
copying a solution from the web is cheating, and is easier for
us to detect than you might think.
- If you have any questions ask me or consult the University Academic Honesty Policy.