Recent Changes - Search:
ECG Home

GitHub

People

Publications

Calendar

Projects

Fall 2017

Older Courses

Spring 2017

Fall 2016

Spring 2016

Fall 2015

Spring 2015

Fall 2014

Spring 2014

Fall 2013

Spring 2013

Fall 2012

Spring 2012

Fall 2011

Spring 2011

Fall 2010

Spring 2010

Fall 2009

Spring 2009

Fall 2008

Spring 2008

Fall 2007

HOWTOs

edit SideBar

SWEfall11

SWEfall11.SWEfall11 History

Hide minor edits - Show changes to output

Changed lines 1-2 from:
[[AICG -> http://app-inventor-gallery.appspot.com]] [[Syllabus]] [[Lecture Blog]] [[Discussion->http://groups.google.com/group/91412-f11]] [[Documentation]]  [[The RGSE]] [[Assignments]
to:
[[AICG -> http://app-inventor-gallery.appspot.com]] [[Syllabus]] [[Lecture Blog]] [[Discussion->http://groups.google.com/group/91412-f11]] [[Documentation]]  [[The RGSE]] [[Assignments]]
Changed lines 1-2 from:
[[AICG -> http://app-inventor-gallery.appspot.com]] [[Syllabus]] [[Lecture Blog]] [[Discussion->http://groups.google.com/group/91412-f11]] [[Documentation]]  [[The RGSE]]
to:
[[AICG -> http://app-inventor-gallery.appspot.com]] [[Syllabus]] [[Lecture Blog]] [[Discussion->http://groups.google.com/group/91412-f11]] [[Documentation]]  [[The RGSE]] [[Assignments]
Changed lines 1-2 from:
[[AICG -> http://app-inventor-gallery.appspot.com]] [[Syllabus]] [[Lecture Blog]] [[Discussion->http://groups.google.com/group/91412-f11]] [[Documentation]]
to:
[[AICG -> http://app-inventor-gallery.appspot.com]] [[Syllabus]] [[Lecture Blog]] [[Discussion->http://groups.google.com/group/91412-f11]] [[Documentation]]  [[The RGSE]]
Changed line 100 from:
|| '''First third of course''' || ||
to:
||'''First third of course''' ||   ||
Changed line 103 from:
|| '''Project cycles''' || ||
to:
||'''Project cycles''' ||   ||
Changed line 106 from:
|| '''Throughout''' || ||
to:
||'''Throughout''' || ||
Changed line 100 from:
|| '''First third of course''' ||
to:
|| '''First third of course''' || ||
Changed line 103 from:
|| '''Project cycles'''
to:
|| '''Project cycles''' || ||
Changed line 106 from:
|| '''Throughout'''
to:
|| '''Throughout''' || ||
Changed line 100 from:
|| '''First third of course'''
to:
|| '''First third of course''' ||
Deleted lines 2-3:
!Students -- this is cloned and only lightly edited from last time I taught this class.  Details will change.  Do not buy the second book -- Dreaming in Code -- don't buy that.  Do buy the first one though -- we will be using the Mythical Man Month.
Changed lines 5-11 from:
In this course, we will learn about software engineering by creating a significant piece of software—a large, multi-faceted software
system.  This will be a team project in which the class will be formed into sub-teams that tackle specific parts of the design, and integrate their pieces into a whole.

We will learn how to design software by reading case studies of large software design projects, considering theory of well-designed
software, and reflecting on the design process as our own projects are underway.

to:
In this course, we will learn about software engineering by creating a significant piece of software—a large, multi-faceted software system.  This will be a team project in which the class will be formed into sub-teams that tackle specific parts of the design, and integrate their pieces into a whole.

We will learn how to design software by reading case studies of large software design projects, considering theory of well-designed software, and reflecting on the design process as our own projects are underway.

Changed lines 24-26 from:
Here, we will take a middle ground.  Primarily, we will have project implementation as the heart of the class.  But we will all be working
a joint project, and will share code and technologies.
to:
Here, we will take a middle ground.  Primarily, we will have project implementation as the heart of the class.  But we will all be working a joint project, and will share code and technologies.
Changed lines 28-30 from:
We will use two required books. They are ordered and available now at the UML North Bookstore.  Please buy them there to make sure you have
them right away:
to:
We will use one required book. It is ordered and available now at the UML North Bookstore.  Please buy it there to make sure you have it right away:
Changed lines 31-33 from:
|| '''The Mythical Man-Month, 20th Anniversary Edition''' (1995) [[<<]] Frederick P. Brooks [[<<]]  %height=150px% [[http://www.informit.com/store/product.aspx?isbn=0201835959 | Attach:mythical.jpg]] || '''Dreaming in Code''' (2007) [[<<]] Scott Rosenberg [[<<]] %height=150px% [[http://www.randomhouse.com/crown/catalog/display.pperl?isbn=9781400082469 | Attach:9781400082469.jpg]]
||This is a landmark book
on software engineering.  It was written in 1975, but it's based on the experiences of lead designer of the IBM System/360 mainframe project in the 1960s.  It was updated 20 years later.  The book gets more and more relevant as the years pass, because its core thesis remains true, even as technology advances:  adding more people to a late software project ''makes it even later''!! ||This is a recent study of the design process of Mitch Kapor's [[http://www.osafoundation.org/ | Chandler Project]], an open-source personal information management system.  It's a modern take on what makes software development hard.
to:
|| '''The Mythical Man-Month, 20th Anniversary Edition''' (1995) [[<<]] Frederick P. Brooks [[<<]]  %height=150px% [[http://www.informit.com/store/product.aspx?isbn=0201835959 | Attach:mythical.jpg]] ||
||This is a landmark book on software engineering.  It was written in 1975, but it's based on the experiences of lead designer of the IBM System/360 mainframe project in the 1960s.  It was updated 20 years later.  The book gets more and more relevant as the years pass, because its core thesis remains true, even as technology advances:  adding more people to a late software project ''makes it even later''!! ||
Changed lines 38-61 from:
This is a project-driven course with a reading component.  Discussion, writings, and other reflections on the readings will illuminate your
design process as you are engaged in your own software development.

Therefore the projects themselves and the readings/reflections are both important.

The specific deliverables you
will be responsible for are:

# '''Tools Setup and Integration Build
.'''  This is the proof-of-concept design that implements all of the essential functionality of the iSENSE system.

# '''Pre-Alpha Release.''' This is the first significant release of the iSENSE system.  We will continue to spec out new functionality based on our experience using the release.

# '''Alpha Release.'''  This release will incorporate most of the features we plan to include, and will be usable (if a bit buggy) by project partners.

# '''Beta Release.''' This release has a feature freeze.  Only bug-fixes are allowed after this release.

# '''Version 1.0 Release.''' This will be used by teachers and students during a summer 2008 workshop.

# ''Documentation.''' This includes having your code on the course source code control server, and turning in specific documentation on
  the design.

# '''Reading reflections.''' Short, 1-page essays on the assigned readings will be a regular event. ''Weekly.''

# '''Mid-term.''' Precise placement in semester TBD.

to:
This is a project-driven course with a reading component.  Discussion, writings, and other reflections on the readings will illuminate your design process as you are engaged in your own software development.

The first third of the course will involve traditional weekly assignments.

This
will be followed by two (approx. 5 week each) software development cycles.

Changed lines 47-53 from:
You are free to use your choice of development tools.  I will probably demonstrate most stuff typing at the Unix console.  Most people seem
to like Eclipse.

There will be a CVS or SVN server set up for course use.  Instruction on using this will be made available.  By the 3rd week all code should
live on the server
.

to:
We will standardize on Ubuntu Linux as the development operating system, and Emacs as the text editor.  We will have coding standards that will be easier to keep uniform if everyone uses Emacs. 

Command line tools will be used for source code management and build
.

Changed lines 53-60 from:
Some work will be done individually and other work will be done in pairs.

For project work, teams will be responsible for conceiving work in such a fashion that each person is responsible for a separable portion
of
the project.  A clear division of work, with an API between each person's portion, will be spec'ed out before substantial implementation is undertaken.  Students will be responsible for implementing their portion of work as originally agreed.  If the design changes dramatically, so that the original definition is no longer applicable, this should be documented and reported as soon as it become apparent.

We will use a course Wiki for each team to post its game releases
.

to:
During the first third of the course, work will be done individually.

During the second two-thirds (the software development cycles), work will be done in teams of two to three persons.

Teams will rotate between
the first development cycle and the second.

Changed lines 96-99 from:
This course does not have an objective external standard (i.e., curriculum) with respect to which student performance will be measured. Instead, I expect that students will enter the course with different backgrounds and abilities, and I am interested in seeing how you challenge yourself and grow rather than where you end up.

The following schedule
will be used in determining course grades:
to:

The following plan
will be used in determining course grades:
Changed lines 100-104 from:
|| 20% ||Classroom participation ||
|| 20% ||Coding and implementation work ||
|| 20% ||Documentation and reporting work ||
|| 20% ||Readings and written reflections ||
|| 20%
||Midterm ||
to:
|| '''First third of course'''
|| 15% ||Weekly assignments ||
|| 10% ||Written midterm ||
|| '''Project cycles'''
|| 25% ||First project ||
|| 25% ||Second project ||
|| '''Throughout'''
|| 10% ||Reading reflections ||
|| 15% ||Classroom and online participation ||

August 18, 2011, at 05:59 PM by Derrell - Added syllabus link
Changed lines 1-2 from:
[[AICG -> http://app-inventor-gallery.appspot.com]] [[Lecture Blog]] [[Discussion->http://groups.google.com/group/91412-f11]] [[Documentation]]
to:
[[AICG -> http://app-inventor-gallery.appspot.com]] [[Syllabus]] [[Lecture Blog]] [[Discussion->http://groups.google.com/group/91412-f11]] [[Documentation]]
Changed lines 3-4 from:
!Students -- this is "beta" and details will change.  Including the second book -- Dreaming in Code -- don't buy that.  Buy the first one though -- we will be using the Mythical Man Month.
to:
!Students -- this is cloned and only lightly edited from last time I taught this class.  Details will change.  Do not buy the second book -- Dreaming in Code -- don't buy that.  Do buy the first one though -- we will be using the Mythical Man Month.
August 15, 2011, at 01:06 AM by 67.189.168.71 -
Added lines 3-4:
!Students -- this is "beta" and details will change.  Including the second book -- Dreaming in Code -- don't buy that.  Buy the first one though -- we will be using the Mythical Man Month.
August 15, 2011, at 12:53 AM by 67.189.168.71 -
Changed lines 1-2 from:
[[AICG -> http://app-inventor-gallery.blogspot.com]] [[LectureBlog]] [[Discussion->http://groups.google.com/group/91412-f11]] [[Documentation]]
to:
[[AICG -> http://app-inventor-gallery.appspot.com]] [[Lecture Blog]] [[Discussion->http://groups.google.com/group/91412-f11]] [[Documentation]]
August 15, 2011, at 12:53 AM by 67.189.168.71 -
Changed lines 1-2 from:
[[AICG -> http:app-inventor-gallery.blogspot.com]] [[LectureBlog]] [[Discussion->http://groups.google.com/group/91412-f11]] [[Documentation]]
to:
[[AICG -> http://app-inventor-gallery.blogspot.com]] [[LectureBlog]] [[Discussion->http://groups.google.com/group/91412-f11]] [[Documentation]]
August 15, 2011, at 12:52 AM by 67.189.168.71 -
Changed lines 1-2 from:
[[AICG -> http:app-inventor-gallery.blogspot.com]] [[LectureBlog]] [[Final Paper]] [[Documentation]]
to:
[[AICG -> http:app-inventor-gallery.blogspot.com]] [[LectureBlog]] [[Discussion->http://groups.google.com/group/91412-f11]] [[Documentation]]
Changed line 112 from:
   <a href="http://groups.google.com/group/91412-fll">Browse Archives</a> at <a href="http://groups.google.com/">groups.google.com</a>
to:
   <a href="http://groups.google.com/group/91412-f11">Browse Archives</a> at <a href="http://groups.google.com/">groups.google.com</a>
August 15, 2011, at 12:51 AM by 67.189.168.71 -
Changed lines 117-118 from:
The group address is mailto:91412-fll@googlegroups.com.  You have to be a member to send to the list.
to:
The group address is mailto:91412-f11@googlegroups.com.  You have to be a member to send to the list.
August 15, 2011, at 12:51 AM by 67.189.168.71 -
Changed line 94 from:
   <td colspan=2 align=center><b>Subscribe to 91412-s08</b></td>
to:
   <td colspan=2 align=center><b>Subscribe to 91412-f11</b></td>
Changed line 96 from:
  <form action="http://groups.google.com/group/91412-s08/boxsubscribe">
to:
  <form action="http://groups.google.com/group/91412-f11/boxsubscribe">
Changed line 112 from:
   <a href="http://groups.google.com/group/91412-s08">Browse Archives</a> at <a href="http://groups.google.com/">groups.google.com</a>
to:
   <a href="http://groups.google.com/group/91412-fll">Browse Archives</a> at <a href="http://groups.google.com/">groups.google.com</a>
Changed lines 117-118 from:
The group address is mailto:91412-s08@googlegroups.com.  You have to be a member to send to the list.
to:
The group address is mailto:91412-fll@googlegroups.com.  You have to be a member to send to the list.
August 15, 2011, at 12:43 AM by 67.189.168.71 -
Added lines 1-129:
[[AICG -> http:app-inventor-gallery.blogspot.com]] [[LectureBlog]] [[Final Paper]] [[Documentation]]

!!Overview

In this course, we will learn about software engineering by creating a significant piece of software&#151;a large, multi-faceted software
system.  This will be a team project in which the class will be formed into sub-teams that tackle specific parts of the design, and integrate their pieces into a whole.

We will learn how to design software by reading case studies of large software design projects, considering theory of well-designed
software, and reflecting on the design process as our own projects are underway.


From a technical perspective, we will:

* Discuss requirements elicitation, agile design, the role of documentation, design patterns, test-driven development, the second-system effect, and the role of community / peer-pressure in sotware design.

* Use the following technologies:  JavaScript, qooxdoo, App Engine

* Work with source code control

!!A Bit More...

To generalize, there are two types of software engineering classes one in which everyone builds the same thing, and one in which everyone builds something different. The former is good because it lets instructors focus in on specific and particular theoretical material. Instructors know exactly what problems you will be encountering as you write code, because they have created the design challenges expressly to expose certain ideas!  A great example of this type of class is MIT's course 6.170, [[http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-170Fall-2005/CourseHome/index.htm|Laboratory in Software Engineering]].

On the other hand you have courses that are more representative of life in the unstructured real-world, where every project is indeed different.  As described by Diane Pozefsky in her [[http://www.cs.unc.edu/~pozefsky/COMP523_s07/home.html | Software Engineering Laboratory at UNC]], this course is a &#147;faculty-coached team project.&#148; Student teams in this type of class might each have a different client and be working with wholly different software technologies.

Here, we will take a middle ground.  Primarily, we will have project implementation as the heart of the class.  But we will all be working
a joint project, and will share code and technologies.

!!Required Books

We will use two required books. They are ordered and available now at the UML North Bookstore.  Please buy them there to make sure you have
them right away:

|| border=0 width=100% cellpadding=10
|| '''The Mythical Man-Month, 20th Anniversary Edition''' (1995) [[<<]] Frederick P. Brooks [[<<]]  %height=150px% [[http://www.informit.com/store/product.aspx?isbn=0201835959 | Attach:mythical.jpg]] || '''Dreaming in Code''' (2007) [[<<]] Scott Rosenberg [[<<]] %height=150px% [[http://www.randomhouse.com/crown/catalog/display.pperl?isbn=9781400082469 | Attach:9781400082469.jpg]]
||This is a landmark book on software engineering.  It was written in 1975, but it's based on the experiences of lead designer of the IBM System/360 mainframe project in the 1960s.  It was updated 20 years later.  The book gets more and more relevant as the years pass, because its core thesis remains true, even as technology advances:  adding more people to a late software project ''makes it even later''!! ||This is a recent study of the design process of Mitch Kapor's [[http://www.osafoundation.org/ | Chandler Project]], an open-source personal information management system.  It's a modern take on what makes software development hard.

There will be other readings, including essays published on the web and material photocopied from out-of-print books.  The latter will be handed out in class.  The current reading assignment is always [[Assignments | here]].

!!Deliverables

This is a project-driven course with a reading component.  Discussion, writings, and other reflections on the readings will illuminate your
design process as you are engaged in your own software development.

Therefore the projects themselves and the readings/reflections are both important.

The specific deliverables you will be responsible for are:

# '''Tools Setup and Integration Build.'''  This is the proof-of-concept design that implements all of the essential functionality of the iSENSE system.

# '''Pre-Alpha Release.''' This is the first significant release of the iSENSE system.  We will continue to spec out new functionality based on our experience using the release.

# '''Alpha Release.'''  This release will incorporate most of the features we plan to include, and will be usable (if a bit buggy) by project partners.

# '''Beta Release.''' This release has a feature freeze.  Only bug-fixes are allowed after this release.

# '''Version 1.0 Release.''' This will be used by teachers and students during a summer 2008 workshop.

# ''Documentation.''' This includes having your code on the course source code control server, and turning in specific documentation on
  the design.

# '''Reading reflections.''' Short, 1-page essays on the assigned readings will be a regular event. ''Weekly.''

# '''Mid-term.''' Precise placement in semester TBD.

!!Build Technology

You are free to use your choice of development tools.  I will probably demonstrate most stuff typing at the Unix console.  Most people seem
to like Eclipse.

There will be a CVS or SVN server set up for course use.  Instruction on using this will be made available.  By the 3rd week all code should
live on the server.


!!Collaboration
Some work will be done individually and other work will be done in pairs.

For project work, teams will be responsible for conceiving work in such a fashion that each person is responsible for a separable portion
of the project.  A clear division of work, with an API between each person's portion, will be spec'ed out before substantial implementation is undertaken.  Students will be responsible for implementing their portion of work as originally agreed.  If the design changes dramatically, so that the original definition is no longer applicable, this should be documented and reported as soon as it become apparent.

We will use a course Wiki for each team to post its game releases.


!!Discussion Group / E-Mail List

We will use Google Groups for class conversation and announcements. Please join this group.  I'd advise setting it to send email to you directly.

(:html:)
<table style="border:1px solid #aa0033; font-size:small" align=center>
  <tr>
    <td rowspan=3>
    <img src="http://groups.google.com/groups/img/groups_medium.gif" height=58 width=150 alt="Google Groups">
    </td>
    <td colspan=2 align=center><b>Subscribe to 91412-s08</b></td>
  </tr>
  <form action="http://groups.google.com/group/91412-s08/boxsubscribe">
  <tr>
    <td>Email: <input type=text name=email></td>
    <td>
      <table
      style="background-color:#ffcc33;padding:2px;border:2px outset #ffcc33;">
      <tr>
        <td>
        <input type=submit name="sub" value="Request">
        </td>
      </tr>
      </table>
    </td>
  </tr>
  </form>
  <tr><td colspan=2 align=center>
  <a href="http://groups.google.com/group/91412-s08">Browse Archives</a> at <a href="http://groups.google.com/">groups.google.com</a>
  </td></tr>
</table>
(:htmlend:)

The group address is mailto:91412-s08@googlegroups.com.  You have to be a member to send to the list.

!!Grading
This course does not have an objective external standard (i.e., curriculum) with respect to which student performance will be measured. Instead, I expect that students will enter the course with different backgrounds and abilities, and I am interested in seeing how you challenge yourself and grow rather than where you end up.

The following schedule will be used in determining course grades:

|| border=0
|| 20% ||Classroom participation ||
|| 20% ||Coding and implementation work ||
|| 20% ||Documentation and reporting work ||
|| 20% ||Readings and written reflections ||
|| 20% ||Midterm ||
Edit - History - Print - Recent Changes - Search
Page last modified on September 04, 2011, at 01:05 PM