Top
Announcements
Big Picture
Basic Coordinates
Description
Schedule
Grading
Academic Integrity
History

CS97 - Senior Conference: Improving Software Quality with Dynamic Analysis

CS97 Logo

Final Reports

All of the final reports have been bundled together into a single document. If you would like your report to be posted here on its own, let Ben know.

TeamReportPresentation
12TLP in Mobile Apps

Big Picture

In CS97 you will learn about what goes on in the world of computer science research. You will read research papers, work on your own original project, and communicate about your own and others' work in multiple formats. This will help you know if a research career is a good fit for you, and you will have taken the first step towards becoming an independent researcher. Even if you do not pursue a career in research, this class will help you learn some of the skills needed to be an effective technical leader. Along the way you will learn about one of the cool topics that fits under the big tent of computer science research.


Basic Coordinates

Instructor: Benjamin Ylvisaker

Textbook: None. Papers, tutorials, lectures, etc will be assigned.

Piazza for questions and answers, discussion, polls, etc. You are strongly encouraged to post course-related questions on Piazza (as opposed to emailing them to the instructor). Piazza supports posting publicly, anonymously (to the class, but still identifiable to instructors) and privately to the instructor(s). Obviously you are welcome to email or drop by for more private questions.

Section 1 (13026)
Lecture/Discussion Tue/Thu 9:55am–11:10am SCI 104
Lab Wed 1:15pm– 2:45pm SCI 240
Section 2 (15107)
Lecture/Discussion Tue/Thu 1:15pm– 2:30pm SCI 105
Lab Wed 3:00pm– 4:30pm SCI 240

During the first few weeks, the lab sessions will be used for simple exercises to familiarize you with a few important tools. Subsequently, that time will be reserved for milestone meetings and presentations. Each team will have approximately 18 minutes to meet with the instructor. When you are not actively meeting, you are encouraged to work on your project. If there are enough resources, you're welcome to be in the lab during the "other section's" schedule time.

Office hours: MWF 8:30-9:30, 10:30-11:30.

If you want to schedule an appointment at another time, please check Ben's work calendar first, then send an email with a specific time request.

Ben is generally opposed to the available-for-work 24/7 approach to life. This means that he is generally disinclined to schedule meetings outside of normal-ish work hours (roughly M-F, 8am-6pm). Also, if you send email or post to Piazza in the evening or during the weekend, there is a very good chance it will go unread until the next work morning. Do not send last-minute emails in the middle of the night expecting a response. See this essay for a nice discussion of these issues.

All handins will be done via git repositories. Details TBA.


Description

This year in CS97 we will look at using dynamic analysis tools to improve software quality. By software quality we mean generic "good things" we would like to be able to say about our software, such as:

  • Correct
  • Reliable
  • Robust
  • Secure
  • Efficient (High throughput, Responsive, Small resource footprint)
  • Portable

Dynamic analysis tools include anything that monitors (and potentially modifies) the behavior of software as it is running. This is a very broad group of tools. Well-known tools like debuggers and profilers have been used approximately as long as people have been programming. In the last decade or so the need for more sophisticated dynamic analysis tools has increased, and researchers have responded with a new crop of awesome tools.

The need for fancier dynamic analysis tools has increased hand-in-hand with the general complexity of commodity software. It is now common for applications to consist of multiple components running on different computers, each of which is cobbled together from dozens of packages written in different programming languages by hundreds of programmers working for different organizations scattered across the globe. In this modern software engineering landscape it is challenging to achieve a tolerable level of confidence that your software actually does what its stakeholders expect it to do.

Modern dynamic analysis tools give us a way to understand what's going on under the hood and have a fighting chance at fixing problems without needing to completely understand the whole system.


Schedule

Week Topic & Important Dates Lab/Misc
1 9/3 Intro [notes] Pin
9/5 Security [notes]
2 9/10 P1: Pin Valgrind
9/12 P2: Valgrind
3 9/17 P3: TaintDroid strace
9/19 P4: Spiral (optional longer version)
4 9/24 P5: Failure-Oblivious Milestone 0
9/26 P6: DieHard
5 10/1 P7: Xen Milestone 0
10/3 P8: ReVirt
10/4 Proposal due
6 10/8 P9: TraceMonkey Proposal presentations
10/10 P10: Dynamic Compilation
10/11 Proposal peer reviews due
7 Fall break (10/12-10/20) ❧
8 10/22 P11: Differential testing
(Previously P11 was Cousot & Cousot, but I decided that paper was a bit too dense and not quite on-topic)
Proposal presentations
10/24 P12: Dart
9 10/29 P13: Klee Milestone 1
10/31 P14: FastTrack
10 11/5 P151: Selenium - Team 17
P152: CopperDroid - Team 21
Milestone 1
11/7 P161: Stable Multithreading - Team 10
P162: Predicates - Team 6
11 11/12 P171: Mobile Malware - Team 1
P172: Stable Multithreading - 12 + 2
Milestone 2
11/14 P181: AppFence - Team 16
P182: eprof - Team 11
12 11/19 P191: Cache Replacement - Team 20
P192: AJAX Usability - Team 13
Milestone 2
11/21 P201: FPGA RankBoost - Team 5
P202: Adversarial Machine Learning - Team 4
13 11/26 P211: Malicious Network Traces - Team 19
P212: It's Alive! - Team 9
Milestone 3
11/28 Thanksgiving
14 12/3 P221: Trace Visualization - Team 18
P222: TouchDevelop - Team 8
Milestone 3
12/5 P231: Sorting, Tuned - Team 3
P232: Soundcomber - Team 14
12/6 Draft of final report due at 5:00pm
15 12/10 P241: ActiveHarmony - Team 15
P242: Clones - Team 7
No lab - Last week of classes
16 12/17 Final presentations
12/20 Final report due at 5:00pm

Grading

  • 30% Papers
  • 70% Project
    • 5% Labs
    • 5% Proposal
    • 5% Proposal presentation
    • 5% Peer review
    • 10% Milestones 1, 2, 3
    • 20% Final report
    • 20% Final presentation

Disability Accommodation

If you believe that you need accommodations for a disability, please contact Leslie Hempling in the Office of Student Disability Services (Parrish 113) or email lhempli1@swarthmore.edu to arrange an appointment to discuss your needs. As appropriate, she will issue students with documented disabilities a formal Accommodations Letter. Since accommodations require early planning and are not retroactive, please contact her as soon as possible. For details about the accommodations process, visit the Student Disability Service website at http://www.swarthmore.edu/student-life/academic-advising-and-support/student-disability-service.xml. You are welcome to contact the instructor privately to discuss your academic needs. However, all disability-related accommodations must be arranged through Leslie Hempling in the Office of Student Disability Services.

Academic Integrity

This is the department policy on academic integrity. Some of the details are more relevant to introductory courses. Below you will find some CS97-specific amendments.

Academic honesty is required in all your work. Under no circumstances may you hand in work done with (or by) someone else under your own name. Your code should never be shared with anyone; you may not examine or use code belonging to someone else, nor may you let anyone else look at or make a copy of your code. This includes, but is not limited to, obtaining solutions from students who previously took the course or code that can be found online. You may not share solutions after the due date of the assignment.

Discussing ideas and approaches to problems with others on a general level is fine (in fact, we encourage you to discuss general strategies with each other), but you should never read anyone else's code or let anyone else read your code. All code you submit must be your own with the following permissible exceptions: code distributed in class, code found in the course text book, and code worked on with an assigned partner. In these cases, you should always include detailed comments that indicates on which parts of the assignment you received help, and what your sources were.

Failure to abide by these rules constitutes academic dishonesty and will lead to a hearing of the College Judiciary Committee. According to the Faculty Handbook: "Because plagiarism is considered to be so serious a transgression, it is the opinion of the faculty that for the first offense, failure in the course and, as appropriate, suspension for a semester or deprivation of the degree in that year is suitable; for a second offense, the penalty should normally be expulsion."

The spirit of this policy applies to all course work, including code, homework solutions (e.g., proofs, analysis, written reports), and exams. Please contact me if you have any questions about what is permissible in this course.

In CS97 there is some individual work, like the labs at the beginning of the semester and the research paper responses. For these items, you must do your own work. However, the main focus of the course is your project. The standard policies prohibiting copying do not really apply, because everyone's project will be different. Please, share code, slides, LaTeX templates, etc to whatever extent will make you more productive. However, in CS97 it is critical that you acknowledge your sources.


Past CS97 Offerings ...

... in case you're curious.

2012 Fall Wireless sensor networks
2011 Fall Data management systems
2010 Fall Data management systems
2009 Fall Computer perception
2008 Fall Computer perception
2008 Spring Computational geometry
2006 Fall Computational geometry
2005 Spring Natural language processing
2003 Spring Natural language processing
2000 Spring Distributed systems
1997 Spring Robots