You know how to write a "program". But how do you create a software "product" as part of a team, with customers that have expectations of functionality and quality? This course introduces students to various tools (source control, automated build systems, programming environments, test automation, etc.) and processes (design, implementation, testing, and maintenance) that are used by professionals in the field of software engineering.
Topics will include: software development lifecycle; agile and test-driven development; source control and continuous integration; requirements gathering and analysis; software architecture; object-oriented design and design patterns; Android application development; software testing; refactoring.
Students should be proficient in Java and have completed CIS 121.
Mon/Weds 4:30-6:00pm, location TBA.
In addition to registering for the Lecture, students must register for one of the Recitation sessions. Registration for one of these sessions is mandatory, as these will be used for project meetings and other group activities.
Back to Top
There will be no required textbook for this course. There will be numerous assigned readings over the course of the semester, but they will be made available to you via Canvas.
Back to Top
Note that these are only guidelines, but final course grades will likely be based on the following:
The assignment of weighted averages to letter grades will likely be as follows:
Midterm exam (15%)
- This is tentatively scheduled for Mon March 2.
- The exam will be closed-book, closed-notes, etc.
Final exam (25%)
- This is scheduled by the university registrar; the tentative date is Tues May 5.
- The exam will be comprehensive, but will focus on material covered after the midterm.
Homework assignments (30%)
- There will be 5-6 short assignments (2-3 weeks each) related to the major themes of the course.
Reading assignments (10%)
- Each week you will have a reading assignment related to the lecture topics. You will then be asked some short questions about the reading and then submit your answers via Canvas.
Group project (20%)
- You will work in groups of four on a semester-long project using an agile development methodology.
- Most students will work on Android apps but you may choose iOS, Ruby on Rails, etc. depending on the nature of your project.
- You may also have the option of developing an app for a "real customer" who is a member of the Penn community, or contributing to an open-source project.
Note that this may change slightly after grading of the project and final exam is completed.
Back to Top
Credit for work will be recorded only as reported by the TA in the Gradebook in Canvas. It is your responsibility to make sure that your work has been properly recorded in the Gradebook.
Make sure you notify the TA of any problems regarding missing records or incorrectly entered scores; the grade entries in Canvas will be considered permanent one week subsequent to their posting.
If you need to request a regrade for an assignment, please try to adhere to the following policy:
- If there was a math mistake in calculating or recording your grade, please email the TA who graded it. I'm sure they'll be happy to fix it.
- If you lost points for something you did correctly, e.g. the grader said "-2 points for not doing X" and you actually did do that (or something similar), please speak with the TA who graded it during office hours. I think it's easier to discuss these things in person than over email. However, if you can't attend their office hours, then email them to try to arrange another time to meet.
- For any other issues, please contact the instructor. This may be things like "I didn't realize we had to do X," "I misunderstood this part of the assignment," etc. This isn't to say that you'll necessarily get points back for your misunderstanding, but issues such as these should go to the instructor.
Back to Top
All work submitted for this class is expected to be your own, unless otherwise noted in the assignment instructions. If you are caught submitting work that is completely copied from some other source, or that has been prepared by somebody other than you, you will face severe discipline by the university.
Homework assignments are to be completed individually unless explicitly stated. You may talk to fellow classmates regarding the assignment and share ideas on Piazza, but keep in mind what is appropriate and inappropriate about your collaboration:
- Person A doesn't understand what exactly the problem is asking, e.g. writing actual code vs. pseudocode. He discusses this with Person B to arrive at one or the other.
- Person A does not understand a particular concept. Person B explains the concept using an example, other than one asked on the homework.
- A attempts half the problem, and B attempts the other half. A and B copy the solutions to half the assignment that the other person wrote.
- Together, A and B work out each homework problem on chalk/white board; then they separately copy down their work and turn it in.
- Person A completed a programming assignment and just before turning it in, he deleted his program - oh no!!!. In desperation, he asks Person B if he can turn in a copy of her program.
- Person A happens to be in the lab working on the assignment and notices that Person B is working on the same assignment. Person A is having trouble compiling his program, and asks Person B to fix the problem for him. Sounds safe, right? It's not.
Note: When in doubt always ask the instructor or TA first, to avoid any potential collabration that can lead to academic dishonesty.
You can further read Penn's Code of Academic Integrity page on this subject matter.
Back to Top
You will turn-in all homework assignments using Canvas.
You may submit multiple times, but only the last submission will be graded.
Submissions after the deadline are subject to a 10% per day penalty, up to seven days, after which the submission will not be accepted.
Back to Top