Syllabus
Syllabus
Course Description
Fundamentals of software engineering using a group project as the central vehicle. Topics covered include software process, agile methods, requirements specification, architectural and detailed design, implementation & UI design and testing and quality assurance.
Moreover, you will learn to work with state-of-the-art tools, such as AndroidStudio as an IDE for App development and Git/Github for collaborative developement and out-of-the-box web pages.
Prerequisites
It is highly recommended to have basic programming skills, either due to previous experience in developing software or acquired by a lecture such as Introduction to Computer Science (for Engineers). However, we do not formally require any prerequisites, though.
Course Format
The class meets two times a week for lectures (or milestone presentations, respectively) and once a week for the Tutorial, which is usually a meeting with your TA, who is acting as your customer and mentor. From mid/end of May (check Schedule), there are no more lectures, and thus, additional time for your project work. It is highly recommended to use these slots for group meetings, as even in time of digitization, a physical meeting is still the most productive one.
A major component of the course is teamwork on a group project, where each team member is required to contribute significantly to the overall accomplishment of the project.
Grading
General Grading Information
The class is not graded on a curve in the sense that a certain percentage of students will receive an A (i.e., a 1.0 in the german system), a certain percentage will receive a B, etc. Doing so would be unfair, and in violation of any serious grading guidelines. I hope and experct everyone in the class to get an A. I also expect everyone to work hard to earn that A, or they will not receive it.
The class is graded on a curve in the sense that the final grade is not mechanically computed from the number of points you get for the particular parts of the project work. It is not the case that students must earn 90% of the overall possible points to receive an A. For example, performing rather low on your presentation does not imply that an A is impossible to get. You can still earn a good amount of points from other parts.
Weighting of Scores (tentative)
The grading for the course consists of two parts, one for indivudal achievements and one for the group achievements.
- Individual Part:
Presentation (20 % of the final grade)
Each team member will give a talk during the milestone presentations to reflect the current project status of the team. The specific requirements for presentations will be announced during the first week and the concrete content will be specified in advance (as part of the Blog requirements).
Contribution (10 % of the final grade)
Active participation of each team member during the course project as wellas in meeting discussions.
We measure this participation by the results of the team reports as well as by commits on Github (which should substantially comprise source code files).
- Group Part:
Blog articles (30 % of the final grade)
Each team will publish five blog articles to document the course project. The specific requirements for each of the articles will be announced in the related lectures. The articles will be graded based upon the content and clarity of exposition.
Team Report (10 % of the final grade)
Weekly Deliverable. Should make clear the tasks of each member, what has been accomplished and what not.
Product (30 % of the final grade)
Each team team will develop a mobile application to solve a real-world problem. The final moblie applications will be graded against the defined requirements, the appearance, and the coding style.
Academic Conduct
Unless otherwise stated, all work submitted as part of the course project is expected to be your own. You may discuss the main ideas of a given problem with other students (provided that you acknowledge doing so in your solution), but you must write the actual solution by yourself.
Prohibited behaviors include:
- copying all or part of another person's work, even if you subsequently modify it
- copying solutions from past semesters, or those found in books or on the Web.
Literature
There are great textbooks on software engineering, such as the one from Sommerville, and others that give great insights in software develoment such as "The Pragmatic Programmer". However, for a more hands-on experience, the following books may be useful, especially if you are relatively new to programming in general and to Android App development in particular.
NOTE: developing software, especially programming, is a craft. You will only learn and improve dedicated skills when you DO IT. So, the ultimate advice: Get your hands dirty!!
- Pilone & Miles: Head First Software Development (O'Reilly)
- Freeman, Robson, Bates & Sierra: Head First Design Patterns (O'Reilly)
- Griffiths & Griffiths: Head First Android Development (O'Reilly)
You may try Google to find online/PDF versions of the books.
This Class starts fast!
The class starts at full-speed. Unlike some classes, it expects you to work your project (and related tasks) fro the very first week. Your work for week 1 should be within the expected 8 hours of work (+ 4 hours of class meetings). Please let us know if it isn't.
The reason for the fast start is to enable you to start on your project by week 2. In the past, we have tried a slower start. It compressed the time for working on the actual project, reduced their quality, and negatively impacted the class.
At some point you may feel overwhelmed: new technology must be managed, additional skills acquired on your own, the lecture material must be taken and applied, and so on. This is intentional: the goal of this class is to teach you new skills that you won't learn in any other class at OvGU! The skills you learn including critical thinking and reasoning will help you in your career, no matter what you end up doing.
Don't be discouraged if your start is dissapointing compared to your expectations. Even if the first prototype crashes all the time, you can expect the steep learning curve if you try again, but learn from your mistakes. And remember: fail & try again has been reported as a successful strategy for many (later famous) people ;)
Other students have survived the class smiling, and we have faith that you will too! We have high expectations, and we will help you achieve them.