Algorithms and OOD (CSC 207 2013F) : Home
Primary: [Front Door] [Schedule] - [Academic Honesty] [Disabilities] [Email] [FAQ] [IRC] [Teaching & Learning]
Current: [Assignment] [EBoard] [Lab] [Outline] [Partners] [Reading]
Sections: [Assignments] [EBoards] [Examples] [Handouts] [Labs] [Outlines] [Partners] [Readings]
Reference: [Java 7 API] [Java Code Conventions]
Related Courses: [CSC 152 2006S (Rebelsky)] [CSC 207 2013S (Walker)] [CSC 207 2011S (Weinman)]
Misc: [SamR] [Glimmer Labs] [CS@Grinnell] [Grinnell] [Issue Tracker (Course)] [Issue Tracker (Textbook)]
Welcome to one of the Fall 2013 sessions of Grinnell College's CSC 207, Algorithms and Object-Oriented Problem Solving, which is described relatively briefly in the official blurb. My own take on this course is that this is the course where you really start delving deeply into what it means to be a computer scientist, computer programmer, or software designer. We will continue your exploration of the design of algorithms, data types, and programs, but will delve more deeply into the tools and analysis related to each. We will use Java as our programming language because it supports some tools and techniques you have not learned previously, particularly through its support of the object-oriented paradigm. As in all Grinnell classes, we'll also be working on general skills, from group work to thinking on your feet.
You have the fortune (or misfortune) to be in an experimental new version of CSC 207. This semester, we will be exploring some aspects of Computing for Social Good (CSG), using techniques from the Free and Open Source (FOSS) community, as well as the open-source application Ushahidi. We will also be mixing in some Android development. My research assistants and I have done our best to limit the extra time these approaches require. In the end, I think working with the FOSS tools, Ushahidi, and Android will build many skills you will find valuable, particularly if you continue in a career in software development, but also in other domains.
I assume that you have mastered much of the material from CSC 151 and CSC 161. Among other things, you should understand recursion, the need for documentation, linked lists, higher-order programming, and some basic algorithms for sorting and searching.
In an attempt to provide up-to-date information, and to spare a few trees, I am making this as much of a “paperless” course as I can. Hence, materials will be in a course web. If you are puzzled by the organization of the Course Web, browse a bit and then ask me. If you find that you want paper copies of pages, please read the notes on printing copies. If you find that you are regularly printing pages, let me know and I can provide them for you.
Warning! Computers are sentient, stupid, and malicious. When things go wrong, don't blame yourself. Ask me, a tutor, or the class mentor for help.
Warning! We are using some cutting-edge software, which means that things will occasionally crash for no good reason.
Meets: MTWF 10:00-10:50, Science 3813
Instructor:
Samuel A. Rebelsky,
<rebelsky@grinnell.edu>
,
Science 3824. 269-4410 (office). 236-7445 (home).
Office hours: M 2:15-4:05, Tu 2:15-2:45, W 2:15-2:45, F 3:15-4:05. I
may add additional Tuesday hours.
I also tend to follow an open door policy: Feel
free to stop by when my door is open or to make an appointment for
another time.
Class Mentor: Lea Marolt Sonnenschein <maroltso@grinnell.edu>
.
Office hours TBD.
Grading (subject to change):
More information on grading can be found in the grading policies page.
Labs: Like many courses in our department, computer science 207 is taught in a collaborative workshop style. Each day, you'll work on laboratory problems with other students in the class. We may also start or end each class session with a short lecture/discussion or a clicker activity.
Extra Credit: I will often offer 1/2 point of extra credit for attending a particular talk (e.g., a computer science talk or College convocation) or for supporting your classmates in their public endeavors (e.g., attending a concert or a dance recital). Each category is capped at 1.5 points. For any activity you wish to credit this way, you must send me a short (one paragraph) note about the activity within two days of the activity.
Tutoring: Evening tutors are not required to know 207 materials. Some will be able to help you. Some will not. I recommend that you use the grinnell-cs IRC channel to get help (and to help each other).
Class Software:
For this course, we will be using a wide variety of plain
off-the-shelf software (POTS) as well as some locally developed
software. Tools you will use include git
(and github), Eclipse, JUnit, Ushahidi,
and the Android SDK. Locally developed software includes a simplified
API for Ushahidi and a few frameworks for Android applications.
Printing Pages:
Most of the pages in the course web are designed for viewing onscreen.
If you'd like to print them, you may want to use PDF versions, which
are designed for paper. To find the PDF version, simply replace
the html
at the end of the URL with pdf
.
If you do decide to print, you should consider printing the document
double-sided and two-up (that is, two pages side-by-side on one
physical page) so as to conserve paper. When I distribute documents,
I will do my best to distribute them in this form.
Computer science is the study of problem solving. So, as we study CS, we can choose particular domains for solving problems. As you know, in CSC 151 we use image making as our problem domain and in CSC 161 we use robotics as our problem domain. For this course, we will explore some basic issues of computing for social good and Android app development (yes, they are related) as our problem domain. Many, but not all, of our activities will emphasize these issues.
As mentioned above, we will be using the open-source crowdmapping platform Ushahidi in this course. Ushahidi was originally developed to provide a venue for people to report election violence in Kenya. It permits anyone to provide geographic reports of incidents, using either relatively low tech approaches (SMS, Twitter) to relatively high tech (smart phone or Web apps) and supports both anonymous reporting and independent verification of incidents.
Ushahidi will serve two primary roles in the course. For most of the semester, Ushahidi will serve as the primary data source for our work in designing and implementing algorithms, abstract data types, and data structures. After fall break, you will also employ Ushahidi in a small consulting project that you will do in a group with a community partner. Further details on that project will come right before fall break.
The focus of this course is not Android development. However, I think that you will understand some of our work differently if you work with it in the context of building simple Android applications. Hence, we will spend about a week of the course exploring basic aspects of Android development, and we will use a simple Android application to ground many of the homework assignments for the semester.
Eckel, Bruce (2002). Thinking in Java (3rd Edition).
A nice book about thinking like an object-oriented programmer. The 3rd edition is a bit out of date (as is the 4th edition), but it's still a nice resource, particularly since it's free on the Web.
Rebelsky, Samuel (2013). The CS207.01 2013F Course Web.
The hypertext that you are currently reading. Many of these materials (particularly those under Readings and Labs are required. You should make it a point to load the page of the day at the beginning of each class to check announcements and such.
Weiss, Mark Alan. Data Structures & Problem Solving Using Java, 4th Edition.
Some people learn better from textbooks than from my less polished readings. This is a nice textbook, one that has been successfully used in other versions of the course.
Primary: [Front Door] [Schedule] - [Academic Honesty] [Disabilities] [Email] [FAQ] [IRC] [Teaching & Learning]
Current: [Assignment] [EBoard] [Lab] [Outline] [Partners] [Reading]
Sections: [Assignments] [EBoards] [Examples] [Handouts] [Labs] [Outlines] [Partners] [Readings]
Reference: [Java 7 API] [Java Code Conventions]
Related Courses: [CSC 152 2006S (Rebelsky)] [CSC 207 2013S (Walker)] [CSC 207 2011S (Weinman)]
Misc: [SamR] [Glimmer Labs] [CS@Grinnell] [Grinnell] [Issue Tracker (Course)] [Issue Tracker (Textbook)]
Copyright (c) 2013 Samuel A. Rebelsky.
This work is licensed under a Creative Commons Attribution 3.0 Unported License. To view a copy of this
license, visit http://creativecommons.org/licenses/by/3.0/
or send a letter to Creative Commons, 543 Howard Street, 5th Floor,
San Francisco, California, 94105, USA.