Note:This is a unique course with lots of exploration, fun and some serious insights into the nature of software engieering and its applciations to real world problems
Note: for those who think software engineering is theory and boring, some results from my experiment of teaching [feeling a little uneasy to share feedback but for motivation]
from anonymous course feedback: "Loved it :)"
"Overall rating for instructor: +100000... [zeroes go on forever :D :P]" on a scale of 7
A sample anecdote: "To be honest, I never experienced a course such as this. Just loved it :)"
more here ;
a few more ;
from the rest of the students
Course Description - What is this course about?
Software is omnipresent today! Be it the apps in your smart phone to the mission-critical solutions in domains like aerospace and healthcare. 18.2 million? software developers and a diversified range of end users across all walks of life are tinkering with software everyday. However, on the other hand, software is buggy, causes several failures and is often termed as theoritical.
This course is an attempt to provide foundations to students for design of quality software and at the same time application of these foundations to develop reasonably complex software systems. Focus will be on providing foundations for different aspects of software engineering like software engineering processes, requirements enigneering, archtiecture, design patterns, testing and applying these foundations for addressing real world problems.
Course Objectives
- ↠ Understand and be able to apply fundamental principles like abstraction, decomposition... in software engineering
- ↠ Understand and be able to apply requirements, artchitecture, design and testing techniques to development of real world software
- ↠ Design and deliver a reasonably complex software system that is deployable
- ↠ Be able to work in teams and document, communicate different artifacts of software
- ↠ Internal Objective: Bring out the best in students using best ways!!!
An Interactive Teaching and Learning Style - Unique aspects of this course
This course uses innovative pedagogies to make learning interactive and these are the following innovative aspects of this course
- ↠ Practice driven learning (Project based learning)
- ↠ Hackathon instead of mid-exam?
- ↠ Extra credits for extra work
- ↠ Best of [Research/Startup] or [Mid-Exam?]
- ↠ A lecture or two from the choice of students
- ↠ Video assignments: You record your answers as video | dubsmash
- ↠ Course Diary: Students write their learnings, likes, dislikes...
- ↠ Studio classroom exercises
- ↠ Bonuses for extended assignment deadlines
- ↠ Puzzle exercises
- ↠ Exit slips: students must earn at least 5 points to leave the class
- ↠ This course will be continuously adapted based on students' interests, abilities and feedback
Grading
This course uses points for grading and as such students accumulate points throughout the course via various activities listed above. They can gain extra points by doing extra and innovative work. The maximum number of points for the course is 1000 and has levels for differnet grades like A, A-, B and so on.
Books/Resources
This course does not use a direct book but students will be provided with a number of resources. The following is a set of reference books that will be available in the institute library
↠ The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition, Frederick P. Brooks Jr., http://www.amazon.in/The-Mythical-Man-Month-Engineering-Anniversary/dp/0201835959
↠ Classics in Software Engineering, Edward Yourdon, http://www.amazon.in/Classics-Software-Engineering-Edward-Yourdon/dp/0917072146
↠ Death March, Edward Yourdon, http://www.amazon.com/Death-March-Edition-Edward-Yourdon/dp/013143635X
↠ Fundamentals of Software Engineering, by Carlo Ghezzi (Author), Mehdi Jazayeri (Author), Dino Mandrioli (Author), http://www.amazon.com/Fundamentals-Software-Engineering-2nd-Edition/dp/0133056996
↠ Software Requirements and Specifications: A Lexicon of Practice, Principles and Prejudices , Michael Jackson, http://www.amazon.com/exec/obidos/ISBN=0201877120/royrweilA
↠ Design Patterns CD: Elements of Reusable Object-Oriented Software (Professional Computing), Erich Gamma (Author), Richard Helm (Author), Ralph Johnson (Author), John Vlissides, http://www.amazon.com/Design-Patterns-Object-Oriented-Professional-Computing/dp/0201634988
↠ To Engineer Is Human: The Role of Failure in Successful Design, Henry Petroski , http://www.amazon.in/To-Engineer-Is-Human-Successful/dp/0679734163
↠ The Pragmatic Programmer: From Journeyman to Master, Andrew Hunt (Author), David Thomas (, http://www.amazon.in/The-Pragmatic-Programmer-Journeyman-Master/dp/020161622X
↠ UML Distilled: A Brief Guide to the Standard Object Modeling Language (3rd Edition), Martin Fowler, http://www.amazon.com/UML-Distilled-Standard-Modeling-Language/dp/0321193687
↠ Software Engineering, Ian Sommerville, http://www.amazon.com/Software-Engineering-9th-Edition-Sommerville/dp/0137035152
↠ Software Engineering: A Practitioner's Approach, Roger S Pressman , http://www.amazon.in/Software-Engineering-A-Practitioners-Approach/dp/0078022126
↠ An Integrated Approach to Software Engineering, Pankaj Jalote, http://www.springer.com/us/book/9780387208817
My first suggested reading is the following:
The Humble Programmer by Edsger W. Dijkstra (ACM Turing Lecture 1972)
Lecture Notes/Calendar (Only sample in this page) | Please follow lecture notes for continuous updates
The lectures of this course follow a unique structure as follows:
- ↠ Start with a tip that will immensley help students!!!
- ↠ Have interactive activities
- ↠ Have puzzles
- ↠ Have stories; every 30 minutes?
Date |
Lecture Notes |
To Do |
Resources/Links |
Week 1, Aug 25th, 2015; Morning Session
|
Software Engineering (Foundations & Practice) - Overview
Tip:Be comfortable!!! Relax!!!
Interaction is mandatory!!! [Grade?] Being silent is much worse than being wrong and there is no wrong
Design of Candy Crush Saga Game - A design activity where four teams are quickly formed and were set a deadline of 20+10 minutes to decide "What to do?" (user perspective) and "How to do?" (developer perspective)
Students were asked to write "Course Diary" - note what they have learnt, like, don't like - will be evaluated as one assignment :)
No attendance but rockers (aka exit slips): Today students wrote the 3 things they learnt in the class. Most of the students wrote: (i) Thinking is critical, creativity; (ii) Team Work; (iii) Software Engineering is interesting and challenging, useful for industry [Not boring :) ]
Course Logistics
Stories: Fred Brooks' failures in software projects, ClapOne (startup for creating filmstar clothing)?
|
Suggested Readings |
The humble programmer, Dijkstra, Edsger W., Communications of the ACM 15.10 (1972): 859-866.
|
Week 1, Aug 25th, 2015; Afternoon Session
|
The Taste of Software Engineering
Tip:Document everything you do... write it down... Course Diary
Debated the statement Software Engineering is a doomed discipline by Edsger W. Dijkstra
What is Software Engineering anyway? - Is software engineering an art, science, engineering or what?
state of software, industry, its size, complexity
roles in software enigneering, differences between programming and software engineering
nature of software and other disciplines
challenges of software engineering
software engineering as process and product engineering driven by people - view of this course
course overview
Passion Project & Project Proposal
Stories: from NATO software engineering conferences
|
Passion Project Proposal
Course Diary
|
Links will be provided
|
Suggested Readings |
Software Engineering: An Unconsummated Marriage, David Parnas, ACM SIGSOFT Software Engineering Notes, Vol. 22, No. 6 (Nov. 1997), pp. 1-3; in: SIGSOFT '97/ESEC '97. Proceedings of the 6th European conference held jointly with the 5th ACM SIGSOFT symposium on Software engineering
|
Week 2, Sep 2nd, 2015; Morning Session
|
The Life of Humans & The Life of Software: Part 1
Tip:Think broad but be [do] as specific [precise] as possible!!!
A recap of "What is Software Engineering anyway?" - it has art, programming, science, engineering...
"is interesting and challenging" [Chimalakonda]
"is a systematic approach to design of software systems with desired qualities under given constraints" [Chimalakonda]
"Life of Humans" as a precursor of discussion of life cycles in software enigneering
don't you think it is crazy? We are talking of life for a non-living thing like software?
life of nature-designed things versus life of man-made things
connecting "life of software" to "life of life": unclear, uncertain, positive & negative influences, controlled & uncontooled
influences on design of software - people, processes, tools -> products; explicit vs implicit, manageable (complexity, change, environment) vs unmanageable
discussed several life cycle models (traditional and agile with examples) mainly focusing on "trade-offs" while selecting life cycles
Stories: Not many except a few cartoons from Dilbert on nature of software :) :)
|
Assigned responsibilties to committees
The Elevator Pitch - Video Assignment - 2 to 5 minutes, Record your project pitch [What's the problem?, Why is it interesting?, What are the existing solutions?, What do you propose?, How do you validate?, What the specific deliverables?]
Due by September 8th 2015 for both passion project and team project
|
Links will be provided
|
Suggested Readings |
Stop the life-cycle, I want to get off, Gladden, G. R., ACM SIGSOFT Software Engineering Notes 7.2 (1982): 35-39.
Selecting a Development Approach, This might help!!!
A closer look at project life cycles, This might help!!!
|
Week 2, Sep 2nd, 2015; Afternoon Session
|
The Life of Humans & The Life of Software: Part 2
continued discussion of life cycle models focusing on agile practices and trade-offs
- The New Idea: Formed committees of students :) I will be overheading all the committees :) :)
- Code Hack Committee: incharge of helping with programming/coding related aspects
- Project/Communication Committee: facilitates in communicating/writing of project ideas and all software artifacts like code, models, requirements, documents
- Innovation/Startup Committee: incharge of bringing up novel ideas and startups from students of the class
Poster Committee: this committee creates a poster of every week's class with inputs from everybody :)
introduced project proposal template
Stories: Not many except a few cartoons from Dilbert on nature of software :) :)
|
Team Project Proposal Document Due by September 8th 2015 [with freezed decisions on technologies and milestones]
Team Project Proposal Initial Document Due by this Saturday night
Passion Project Proposal Document Due by September 8th 2015
|
Links will be provided
|
Week 2, Sep 5th, 2015; Tutorial
|
The Software Engineer's Toolbox
This tutorial provides necessary knowledge to use tools, languages, version control, IDEs, langauges and so on for successfully completing software engineering projects
|
Links will be provided
|