CS 230: Software Engineering
General Description
As software systems become increasingly large and complex, automated
software engineering analysis and development tools play an important
role in various software engineering tasks: design, construction,
evolution, and testing and debugging of software systems. This course
will introduce students to the foundations, techniques, tools, and
applications of automated software engineering technology. Students will
develop, extend, and evaluate a mini automated software engineering
analysis tool and assess how the tool fits into the software development
process. This class is intended to introduce current research topics in
automated software engineering.
Undergraduate level knowledge of data structures and object-oriented
program languages is required. A prior course in software engineering
(undergraduate) such as CS130 is recommended. Please feel free to take a
look at
CS
130 syllabus here. You are welcome to just sit in for a few days
and see how this class feels. By understanding the fundamentals behind
automated software engineering analysis algorithms, techniques and
tools, students will acquire keen eyes on how to systematically design,
analyze, and extend large software systems. This will prepare students
to become principle software architects and development leads in the
future.
- Intelligent integrated development environments
- Computer-aided design of software
- Automated testing and verification
- Computer-aided bug finding and advanced debugging techniques
- Computer-aided program understanding
- Computer-aided refactoring and documentation
Audience and Prerequisites
This class is intended to introduce current research topics in
software engineering with focus on software evolution. Undergraduate
level knowledge of data structures and object-oriented program
languages is required. Knowledge of compilers, program analysis and
program representations is encouraged. If you are unsure of your
qualifications, please contact the instructor, who will be happy to
help you decide if this course is right for you. You are welcome to
just sit in for a few days and see how this class feels.
Grading
Project: 45% (Note that Final Exam Time will be used for project
presentations. Monday, June 06, 2016 8:00 AM - 11:00 AM)
Student Learning Presentation: 20%
Mini PC Meeting: 20%
Reading Questions and Participation: 15%
Reading Assignment Instruction
Please download the above paper from the ACM Digital Library. Access to
ACM digital library is free if you are using a computer on campus with a
valid UCLA IP address. Please submit
one paragraph review in
the form of comment of 1 or 2 questions through Piazza
before each paper discussion. Your questions should reveal your critical
analysis of the assigned reading. The grading of reading questions will
depend on the
overall quantity and
quality
of your questions.
Class Discussion: Think-Pair-Share
How Does It Work?
1) Think. The teacher provokes students' thinking with a
question or prompt or observation. The students should take a few
moments (probably not minutes) just to THINK about the question.
2) Pair. Using designated partners (such as with Clock Buddies),
nearby neighbors, or a deskmate, students PAIR up to talk about the
answer each came up with. They compare their mental or written notes
and identify the answers they think are best, most convincing, or most
unique.
3) Share. After students talk in pairs for a few moments (again,
usually not minutes), the teacher calls for pairs to SHARE their
thinking with the rest of the class. She can do this by going around
in round-robin fashion, calling on each pair; or she can take answers
as they are called out (or as hands are raised). Often, the teacher or
a designated helper will record these responses on the board or on the
overhead
Class Schedule, Reading List, and Project Milestones
Mini Projects
- replication of an existing idea
- proposal of a new research project
- develop and assessing new algorithms to replace currently-used
ones
- translate a methodology to a new problem domain
- apply known techniques to new problem domains, such as operating
systems, networks, embedded systems, security, biology, aerospace,
etc.
- port an existing tool to a new domain (e.g., a new programming
language)
- assessment and evaluation of existing techniques or tools via case
studies or controlled experiment
Each team should submit a written report (max 10 pages) to the CCLE
system. You may include an appendix beyond 10 pages, but your paper
must be understandable without it. Submissions should be in the ACM
format. Each team may consist of 3 to 5 people, and will be
limited by the time limit we have for final presentations.
- In Week 2, I will release a few sample project ideas to guide you
with the process of choosing a project topic.
- In Week 3, I plan to have meeting with individual teams to discuss
your project topic idea and your team's early progress.
- Around Week 7, I plan to have another meeting to discuss each
team's progress.
- The project grading will be based on both the progress
report in each milestone, individual meetings,
and your final report and presentations.
Your report should be structured like a conference paper, meaning
that your report should contain:
- Abstract
- A well-motivated introduction
- Related work with proper citations
- Description of your methodology
- Evaluation results
- Discussion of your approach, threats to validity, and additional
experiments
- Conclusions and future work
- Appendix: Describe how to run and test your implementation.
If you are doing a project that involves implementation, please submit
your source code by sharing an on-line repository. Please describe how
to run and test your code in your report.
Here's grading guidelines for your project report.
Motivation & Problem Definition
- Does this report sufficiently describe motivation of this project?
- Does this report describe when and how this research can be used
by whom in terms of examples and scenarios?
- Does the report clearly define a research problem?
Related Work
- Does the report adequately describe related work?
- Does the report cite and use appropriate references?
Approach
- Does the report clearly & adequately present your research
approach (algorithm description, pseudo code, etc.)?
- Does the report include justifications for your approach?
Evaluation
- Does this report clarify your evaluation’s objectives (research
questions raised by you)?
- Does this report justify why it is worthwhile to answer such
research questions?
- Does this report concretely describe what can be measured and
compared to existing approaches (if exist) to answer such research
questions?
- Is the evaluation study design (experiments, case studies, and
user studies) sound?
Results
- Does the report include empirical results that support the
author’s claims/ research goals?
- Does the report provide any interpretation on results?
- Is the information in the report sound, factual, and accurate?
Discussions & Future Work
- Does the report suggest future research directions or make
suggestions to improve or augment the current research?
- Did the report demonstrate consideration of alternative
approaches? Does the report discuss threats to validity of this
evaluation?
Clarity and Writing
- Is the treatment of the subject a reasonable scope as a class
project?
- How well are the ideas presented? (very difficult to understand
=1, very easy to understand =5)
- Overall quality of writing and readability (very poor =1,
excellent =5)
Student Learning Presentation.
Two students jointly have a 20 minute presentation to discuss recent
advances on the lecture's topic (or each student will have a 10 minute
presentation). For example, in Week 5, the class discussion topic is
refactoring, and the students will select a state-of-the-art recent
papers (ideally in the last two to three years) on the topic of
refactoring practices, refactoring reconstruction, and automated
refactoring support. The student will perform critical reading of the
paper and assess the technology and concept. The student will then
present their findings and analysis to complement my lecture and class
discussion, which are based on seminal papers in each topic. You are
welcome to consult me on the choice of your paper. You may also
include a short demo of relevant tools if necessary.
Mini PC Meeting
Mini PC meeting emulates an actual programming committee meeting where
program committee members select peer-reviewed research articles for
technical conferences. Each committee member will review papers assigned
to them and submit a critical assessment for each assigned paper, either
from a perspective of an advocate or from a perspective of skeptic. A
review template will be provided and you will write a review but also
provide scores to indicate your assessment of the paper's originality,
comprehensiveness, and new research contributions. Only after you submit
your reviews, you will be able to see other committee members' reviews.
On the days of PC meetings, I will take a role of PC chairs and we will
have a roundtable PC meeting where each paper is discussed by the
committee members who review the paper.
Feedback Statement
During this course, I will be asking you to give me feedback on your
learning in both informal and formal ways, e.g., including
anonymous
midpoint survey about how my teaching strategies are helping
or hindering your learning. It is very important for me to know your
reaction to what we are doing in the class, so I encourage you to
respond to these surveys, ensuring that we can create an environment
effective for teaching and learning. Occasionally, at the end of the
lecture, I will hand out index cards to ask
"what is the most
important thing you have learned in this class session?" and
"what questions do you still have?" This feedback will
be anonymous and this is to check your understanding and promote
Q&A. Please also take the time to write
written comments
when submitting your
course instructor survey. Your
course instructor survey is important to me and future students. To
reward your participation, I will add 2% of the total grade for
participating in the course instructor survey.
Grading Scheme
Project reports, milestone and presentations will be graded in the
scale of 5pt.
- 5 pt: Excellent design, complete
implementation, selection of a task that is highly intellectually
challenging, creative, concise yet comprehensive writing, nearly
perfect answers, beautifully written and verbally communicated,
eloquent presentation within a time limit
- 4 pt: Very good, mostly correct answers, i.e.,
>85%, selection of a intellectually challenging project topic,
well written, good verbal presentation, well practiced presentation
within a time limit
- 3 pt: Good understanding of the key concepts,
mostly correct answers, i.e., >70%, selection of a intellectually
challenging project topic, well written, good verbal presentation,
well practiced presentation within a time limit
- 2 pt or 1pt: Poor, shallow, minimally
sufficient, or needlessly wordy, key concepts misunderstood or
missing, selection of easy project tasks, poor written and verbal
communication, presentation over time, not following specified
formats.
Reading reviews/questions will be graded in the scale of 1 pt.
- 1 pt: Good questions based on understanding of
the key concepts
- 0 pt: Poor questions based on shallow, minimally
sufficient reading
- When your questions are insightful and novel
based on in-depth critical analysis of the
papers, such questions will be graded with 2pt for the merit.
Class Discussion
We are using Piazza for class discussions. Link:
piazza.com/ucla/spring2016/cs230/home
Please note that not all in-class announcements will be repeated through
Piazza.