In designing a database systems course we can think of at least two approaches: applications-oriented and systems-oriented. In the applications-oriented approach we would start with the Foundations chapters, then the Application Development chapters, followed by the overview systems chapters, and conclude with the Database Design and Tuning material. One of the major components of this approach is a term project where students in teams build a rather serious database application. In the systems-oriented approach we would start with the same Foundations chapters and cover a selection of Applications and Systems chapters. In this approach we build a simple database management system, a main-memory DBMS in our case. There are many components that make up a DBMS and we will be including many of them in the design and actually implement them incrementally throughout the semester. In my previous offerings of CS 133, we did the applications-oriented approach. This coming spring, however, we will do the systems-oriented approach. If you want to learn how a DBMS is built in some detail, this would be a good course to take. You will also have some understanding of how to build a database application although we won't actually be building one.
What makes some topics so difficult to learn? How can teachers and grutors help students master these difficult topics? The answers to these questions relate to what educational researchers call pedagogical content knowledge and are a central theme in this course.
Participants in this seminar-style course will discuss readings that explore general issues of teaching and learning as well as readings that explore how students learn within computer science. Weekly assignments will build toward all course participants (individually or in partnership) conducting research to develop pedagogical content knowledge about a concept of their choosing. Course participants will disseminate their work through a paper describing their research findings as well as a short tutorial teaching the relevant content knowledge.
All course participants will be invited to present a poster of their research at a computer science education conference on Saturday April 6th (http://www.ccsc.org/southwestern/2013/). Course participants may choose to extend the project beyond the semester in order to submit a paper for publication at an education conference.
Individuals from all majors are welcome and computer science content knowledge beyond CS5 is not required.
Many software products and companies are based on a small number of clever and sophisticated algorithms. It's not surprising, therefore, that "Chief Algorithms Officer" is now a title at numerous companies. Software developers too are increasingly expected to be algorithmically sophisticated. And, the field of algorithms is beautiful in its own right as an area of research at the intersection of discrete mathematics and computer science.
This course will expose you to a number of important ideas that are both very useful and mathematically elegant. Among these are fast algorithms for finding matchings in graphs (this problem arises, for example, in online auctions), the theory of Matroids (a general "unifying theory" of greedy algorithms), online algorithms for robotic navigation, and approximation schemes for NP-hard problems (did you know that for points in the Euclidean plane, you can get solutions to the traveling salesperson problem that are arbitrarily close to optimal - but not quite optimal - in polynomial time!?).
The course has one problem set per week and an untimed takehome exam at the end of the half-term.
Introduction to the basic concepts in social computing, combining several scientific perspectives for understanding social networks and human behavior. Students will learn how to identify key components, to detect and generate fundamental structures, and to model the growth and propagation in social networks. Group presentations, weekly problem sets, two programming projects, and a final research project. After the course, students will be able to use common techniques in data collection, sentiment analysis, structural analysis, modeling and textual analysis to execute their own network analytic projects.