Spotlight on CSA, Spring 2005: Exciting CS that makes a difference
The project for the Spring 2005 offering of
CS 284, Client-Server Applications (CSA)
will build an "web portfolio manager." Web portfolios are web sites
that represent a body of work, just as an artist's portfolio
would present a collection of that artist's work. Web portfolios have
become more and more popular, not only among artists such as painters
or theater technicians, but also for professionals such as teachers
(presenting such items
as lesson plans, course curricula, and examples of their students'
assignments).
At St. Olaf, making a web portfolio is increasingly seen as a
learning tool. In particular, all students with individually
arranged majors through the Center for Integrative Studies
(CIS) must create a web portfolio for his/her CIS major.
These portfolios not only shows a student's
accomplishments, but also constructing the portfolio is a learning
experience in itself. For example, making a web link in such a
portfolio might represent a significant intellectual connection
between concepts that aren't obviously related.
The CIS program and its majors will serve as the user community for
our CSA web portfolio manager project. Our portfolio manager software
will make it easier for CIS students, many of whom have never
created a web page before, to get started on their portfolios early in
their majors, so they can benefit from the portfolio as a learning
tool throughout their individual major programs. The proposed system
will make it easier for users to "go public" with their portfolios,
and will
offer control over what parts to make public; it will also enable
portfolio writers to select with whom they will share which parts.
Style configuration options will make it easier for portfolio
writers to customize and personalize their sites, without having to
learn all the technology themselves. And ultimately, the
system will provide specific capabilities to support portfolio-based
learning, e.g., enhancements related to links that help one focus on
the importance of the intellectual connection represented by that
link.
Of course, once a web portfolio management system has been created
with the needs of CIS students in mind, that same system will be
available for other user communities, who share many of the same needs
as CIS majors.
How can such a substantial project be tackled in the CSA course? The
key is to start small, and keep adding incremental improvements to a
working system. We will use the "Extreme Programming" style of
software development, which employs such iterative
development in short cycles, and also emphasizes team
cooperation, simplicity, good communication, and updated computing
tools. Everyone in the CSA course will be part of the team, working
on the project for most of the semester.
This project will call for CSA students to learn many new
things:
Java will be the primary programming language for
CSA. Java is object-oriented, and similar to C++ in it's syntax, but
with strategic simplifications (e.g., no pointers, no memory
management worries) that make it much quicker to create a large-scale
project of this type. Incidentally, the Java language is highly
prominent these days---and having both Java and C++ skills makes an
outstanding combination for applications in other disciplines and in
the outside world.
This project will require considerable Graphics User Interface
(GUI) programming, in order to make the system easy and intuitive for
CIS students to use. CSA students will learn to program GUIs in Java,
which has extensive support for such tasks.
We will also study programming with networks, another
technology that is easier in Java than in other languages. Our
project will use networking to communcate between the user's GUI
software and a database for permanent storage, and also for installing
new public versions of a portfolio on the web.
As the item above indicates, we will use a database
system to store portfolio content, configuration options, etc.
CSA students will receive an introduction to databases, including the
standard language for interacting with databases, known as SQL.
Finally, the XML language is ideal for representing a
portfolio's structure and content. XML is fully customizable, easily
converted to HTML (the language of the web), and well-supported by
Java.
Of course, each of these topics could take up a whole course if
covered in enough generality. In CSA, the project will focus our
exploration. we will introduce each of these
areas, learning the essential concepts and developing hands-on
abilities in lab, then apply that knowledge and skill to the project.
CSA is designed to make this agenda succeed. We've increased the
meeting time to 1.5 hours, three times per week, in order to make
sure there's enough time and flexibility for concepts, lab, and
project. Similarly, the online supporting text, lab exercises, and
preliminary project planning has been expanded considerably since the
first offering of CSA last Fall. Plus, the software tools for
supporting the project work really do help. For example, we will use
an integrated development environment (IDE) called Eclipse,
designed to make the whole software development process more
convenient, including online reference, testing, software analysis,
code sharing, and version control.
CSA has CS 251, Software Design and
Implementation (SD)---or equivalently
CS 125, Accelerated Principles of Computer Science
(CS1+)---as its only prerequisite. Thus, CSA is suitable for
those taking their first "core" course in the CS program.
However, it also works great
for advanced students with many CS courses under their belts
as well as those who have only taken the prerequisite: experienced
students will proceed through the background material more quickly and
get started on the project sooner. SD/CS1+ students will build up
their backgrounds at pace that's more comfortable for them, then join
the project when they're ready. An experienced teaching assistant
(who also co-designed the project)
will be available to insure that everyone gets the support they need.
CSA in Spring 2005 includes a lot of fascinating computer science
related to modern client-server systems, such as the web. The project
will make a real difference, initially for students with
individualized majors, and ultimately for many others who will
construct web portfolios in the future. CSA is
a great course for SD/CS1+ students who want to move on to the next
level, and also for advanced students seeking a substantial software
project to sink their teeth into. As an alternate-year course, CSA
won't be offered again until 2006-07, so consider CS 284 (CSA) for
Spring 2005.
|