CS201 Slides - University of Virginia

advertisement
CS2110: Software Development Methods
Prof. Tom Horton
and TAs
• Course Mechanics
• Course content
• Topics from earlier classes
• CS2110 course learning objectives
• What’s the course all about? A quick
tour
What’s CS2110 About?
• What do you think?
• From the Undergraduate Record:
• A continuation of CS 1110, emphasizing modern
software development methods. An introduction to
the software development life cycle and processes.
Topics include requirements analysis, specification,
design, implementation, and verification. Emphasizes
the role of the individual programmer in large
software development projects.
Better/replacement course description
A second course in computing and software development,
with an emphasis both on modern software development
and on principles central to computer science.
Topics related to software engineering include the
development lifecycle, requirements analysis,
specification, design, implementation, and verification.
Also addresses core computing principles such as
abstraction, encapsulation, information hiding and
recursion. More object-oriented programming techniques
including inheritance, polymorphism, event-based
programming.
Course Topics
• Object-Oriented
programming:
• Abstraction, information
hiding, recursive definitions
• Design decisions, design for
change and reuse
• OO design: inheritance,
polymorphism, etc.
• Modern PL features:
• Exceptions; streams
• GUIs; Event-based
programming
• Networked programs
• Concurrency, threads
• Introduction to Software
Development Practices:
• Professional practices
• Reading/writing
specifications
• Planning and designing
programs
• Debug and test
• Basic documentation,
standards, some
maintenance
• Use of tools
• SW security
Course Objectives:
• Upon successful completion of this course, students will:
1. Comprehend more advanced principles of object-oriented
programming and how a programming language supports
these, and apply these by developing larger and more complex
programs than in their first programming course. (Topics include
polymorphism, inheritance, collection classes, generics, etc.)
2. Comprehend and apply principles of design at the class and
object level. These principles include abstraction,
encapsulation, and information hiding. This also includes the
ability to define and evaluate class interfaces to solve specified
design problems, as well as the ability to understand, apply, and
evaluate the use of reusable components to solve such
problems.
Course Objectives:
3. Comprehend and analyze problems and
programming issues such as dynamic memory
management, indirect object references, and
recursion. Also, be able to apply this knowledge by
implementing software that includes these features.
4. Apply knowledge of software development
practice to effectively use strategies, tools and
environments such as interactive development
environments, debuggers, testing frameworks, etc.
Course Objectives
5. Comprehend important basic concepts of software
engineering and the development of large
software systems, including the software lifecycle,
requirements, design, and software quality. In their
development activities, students will be able to apply
basic unit testing and carry out a software
inspection.
6. Comprehend the basic principles of the
architecture of larger software systems, in
particular object-oriented frameworks. Students will
be able to apply this knowledge by developing a GUI
using a framework.
Learning Sources
• Lectures and class activities
• Plan to attend!
• Laboratories
• You must enroll in one of Lab Sections ASAP
• A textbook to read
• Modern Software Development Using Java. (“MSD”)
• 2nd edition vs. 1st edition
• Should have some Java reference text
• See BOCM. One is on-line, free.
• On-line resources: especially the Java API docs
• Early in term: Javabat (http://codingbat.com)
Necessary Background
• Pre-requisite (enforced!):
• CS1110 at UVa (with a C- or better) or the equivalent
• AP or IB exam counts
• No university credit? Must take placement exam
• First programming course in Java
• Defining and using classes and objects
• Loops and conditionals
• No more than an overview of inheritance
• Ability to use a Java development tool like
JCreator, BlueJ, Eclipse
• If you’re concerned, talk to me ASAP
Course Organization, Communication, etc.
• Course web page: http://www.cs.virginia.edu/~cs201
• Course TAs
• One TA will be the Head TA for each lab-section
• Like the instructor for the lab
• Responsible for grade management (entering, reporting, updating)
• More TAs will grade assignments and exams
• Instructor’s role
• Lectures, planning, course-design, student issues, etc.
• Questions:
• Send general questions to Collab Message board!
• Send HW and grade questions to the staff:
uvacs2110@gmail.com
• Send your instructor email on other things when appropriate
• PLEASE include CS2110 in the subject line
Instructor Information
• Prof. Tom Horton
• Office: Olsson 228B. Phone: 982-2217
• Email: horton.uva@gmail.edu
• Office hours: MWF 11am-noon; TTh 1:30-2:30pm
Laboratories
• Lab activities are the central learning activity for
CS2110
• Sometimes a pre-lab activity. (Must do it!)
• In lab: a lab exercise
• Coding, group exercise, quiz, etc.
• Graded on participation mostly
• Programming Assignments AKA Homeworks
• The “real” homework. Graded on quality.
• Often done in pairs (according to certain rules).
• Do outside of lab. Submit electronically.
• Project(s): slightly larger assignments, done by
groups of 4
Project
• Starts after Spring break
• Lasts 4 or 5 weeks
• Final week: demo in lab to TA
• Choice of project
• Instant Messenger Client
• Android phone app
• We have 25 Android phones for groups to use!
• Project goals:
• Put into practice SW Engineering knowledge
• Create a significant application that’s fun and
motivativing
Other Policies Etc.
• Honor Policy (read the course memo carefully)
• It applies in CS2110!
• Students and faculty at UVa should (re)commit to its
principles and policies
• See each assignment for rules about collaboration
• Do not copy other people’s code! Do not give your
code to others outside the rules!
• Some assignments allow you to talk to classmates
• This really shouldn’t lead to identical code, should it?
• Violations: zero on the assignment, submission to the
Honor Committee
Need Accommodation?
• Learning Needs (LNEC) students
• Get in touch at least one week before an exam
• If you need other things, contact me.
• Any student who thinks s/he may qualify, contact the
Learning Needs center
• If you have an illness, trip, etc. that requires you
to miss an exam or lab
• Contact me in advance or as soon as possible
• If you have any kind of issues that affect your
attendance or performance, do not hesitate to
contact me!
Expectations
• I expect you:
•
•
•
•
To
To
To
To
make your best effort
prepare when required or do other activities
come to class and do the readings
let me know if there are problems or issues
• You can expect me and the CS2110 team to:
• Be objective and fair and understanding
• To keep your informed about assignments and grades
• To listen and respond when you make comments or
suggestions
• To make do my best to make this a good course
In-Class Activity
• In groups of 2-4, talk about the following things
• Then, I’ll ask some groups to report to the class
• First, share your name and major
• Second, talk about what worries you about this
class
• Third, come up with at least 2 questions about
the syllabus.
• Go!
Results from Discussion
• Worries
• Add items
• Useful/Interesting or Not
• Add items
Who Are You?
• You’re not all
engineers
• Less than 10% are
declared as
computing majors
• 60% of you are
undeclared
What’s Next: Java Review
• Before lab next week:
• Finalize your lab situation!!!
• Old version of MSD book: Appendix A, pp. 820—854
• We’ll see about putting this or other review topics on
the web
• Friday’s lecture is Java review…
Download