Date |
Lecture Notes |
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.
No Silver Bullet - Essence and Accidents of Software Engineering, Brooks, F. P. , J. (1987).
|
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
|
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 :) :)
|
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 :) :)
|
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
Be designers and not users. Dont be biased. Be open to critics.
Languages like C/C++/Java/Python help you transform your ideas.
Make modular and commented programming your habit
Smart developer makes use of all the resources he has. Use plugins/IDEs/community shared code. Give them due credit!!!
If you have a problem, someone else also might have faced it. Google. Learn yourself. We are always there to help you.
|
Week 3, Sep 8th, 2015; Morning Session
|
Can I Get What I Want [Need] Without Knowing What I Want? #$%^@1*9a!#%^^&&&** (aka Requirements Engineering)
Tip:Must interact both online & offline for projects and course | You will learn that interaction is as critical as technical skills [more?]
The Gizmo of Worlds - problem world, solution world, design world, programmer's world... expression of these worlds
The stakeholder world, their perspectives
Requirements Engineering as a systems engineering view
the many views of requirements engineering - It's not software engineering alone!!!, multi-disciplinary, human-centered process, the spectrum of informal, semi-formal and formal views, functional and non-functional, product and process-oriented...
where do requirements stem from? customer, problem, future need? what?
The Kano Model for requirements: Dissatisfiers, Satisfiers, Delighters...
heavily discussed on formal and informal worlds and presented requirements as the most criticl aspect entire software development
|
Suggested Readings |
"Requirements Engineering: A Roadmap", B. A. Nuseibeh and S. M. Easterbrook, In A. C. W. Finkelstein (ed) "The Future of Software Engineering". (Companion volume to the proceedings of the 22nd International Conference on Software Engineering, ICSE'00). IEEE Computer Society Press.
Refer this
course website by Steve Easterbook for a detailed overview of requirements engineering
|
Week 3, Sep 8th, 2015; Afternoon Session
|
Requirements Engineering - Does it really work in practice?
continued discussion of requirements engineering
requirements enigneering process - eliciation, modeling and analaysis, commuinicating, agreeing, evolving...
a brief discussion on use cases
intensive discussions on projects - "10th idea clicks? [after striking off 9 ideas :)]
what is a reasonably complex system?
from informal world to formal world
why non-functional requirements are critical? [even more] than functional requirements? [I don't like calling them as non-functional though :( ]
especially with focus how non-functional becomes functional?
Stories: dumb shell arts - communciating easy and tough requirements
|
Week 3, Sep 12th, 2015; Tutorial
|
How do I communicate? - The UML Toolkit
This tutorial provided necessary knowledge to use modeling (UML) and tools to document software artifacts like architecture, design and so on for successfully completing software engineering projects
|
Week 4, Sep 15th, 2015; Morning Session
|
Projects: Why, What, Who, Where, When, How? - Confusion, Clarity & More!!! [Part 1]
Tip:Must have a deadline [time-boxes] for micro-tasks, not just macro-tasks [Emphasized this again and again!!!
Why do projects fail? - unrealistic goals, too much time for [non-critical tasks, design and technology decisions...], looking for completeness and so on...
The Zachman Framework focusing the different views of stakeholders and the overload of heavy documentation?
Modeling artifacts during software development: Plan-driven versus Agile
Deming's philosophy, principles (Process-Product Co-relation) and the Plan, Do, Check (Study), Act (PDCA) cycle as simple yet powerful technique...
The Agile Manifesto - A Practical View
Scrum Approach: Sprints, User Stories, Backlogs, Burnouts, roles of team members, Scrum Master, and more... Scrum for projects
Pair Programming
Stories: Amazing stuff today: Deming's, The Toyota Way, Lean and Agile!!!
|
Suggested Readings |
A framework for information systems architecture Zachman, John, IBM systems journal 26.3 (1987): 276-292.
Why software fails? A nice read!!!
Improving your odds for software project success Frese, Robert, and Vicki Sauter. Engineering Management Review, IEEE 42.4: 125-131.
A decade of agile methodologies: Towards explaining agile software development Dingsøyr, Torgeir, et al. Journal of Systems and Software 85.6 (2012): 1213-1221, This is a nice overview and you can dig deep for topics that you like!!!
|
Week 4, Sep 15th, 2015; Afternoon Session
|
Projects: Why, What, Who, Where, When, How? - Management, Planning, Scheduling, Estimation!!! [Part 2]
Tip:If you cannot finish a task in 24 hours, then divide the task till you can finish in 24 hours...
Estimation methodologies: Top-down, bottom-up, expert judgement, analogy...
Cone of uncertainity
Metrics for estimation: LOC, Why it is not enough?, Function Points,
COCOMO, Estimation guidelines
Software estimations: size, effort, resources: How to reuse, cost of reuse, tools...
Work Breakdown Structure for Product and Process
Startup process: how the time has shrunk rapidly... seed, angel and different kinds of funding
Stories: startup tales...
|
Week 4, Sep 19th, 2015; Tutorial
|
A practical overview of UML, Technologies and more... connecting to students' projects
|
Week 5, Sep 22nd, 2015; Morning and Afternoon Sessions
|
A Quick Revision of SEFP (Four Weeks) + Design Studio Exercises for Requirements Modeling
Requirements: How to Model Them? (SRS, Use Cases, User Stories)Analysis, Techniques and Modeling
Tip:Emphasized course logistics again!!!
What is a Software Requirements Specification? - its properties, structure, advantages, disadvantages
Bad requirements modeling?
How to elicit requirements? - Interviews, Surveys and more...
Design studio exercises - writing requirements using use cases in the class for projects
An amazing day with several discussions on startups, software and more: I floated the idea of desining shoes that change color as per the color of dress a person wears :)
Stories: Today was an interactive class and no direct stories :P
|
Suggested Readings |
Please refer the slides shared with the class!!!
|
Week 6, Sep 29th, 2015; Morning and Afternoon Sessions
|
Unveiling Design (Software) - The roots of design from other disciplines
Tip:No tip :P
Design from construction, engineering, automobile, mechanical, publishing and os on...
Move making and software design: Pre-Production [Requirements, Design], Production [Implementation Design, Coding], Post-Production [Testing, Evaluation]
What is design anyway? - design work, design cycle [ideas, goals, constraints, assumptions, decisions]
Software design - its many facets focusing on desirability and feasibility...
Four types of software design application, interaction, architecture, implementation...
Design studio exercises - students were asked to think of designing a pair of eye glasses that can detect the mood of the person and influence that mode... a very nice exercise... one group came out with machine learning algorithms of moods, databases and so on...
Design notation - informal to formal... balance as the key in the entire design process
Design tools - pen and paper, whiteboard, domain specific tools...
Why design fails? - software design as a wicked problem...
difficulties of software engineers: tradeoffs, unpredictability, bias, change and so on...
User interface design: bones, frills, no-frills?
understanding users, tasks, grouping them...
how you should not design user interface
|
Suggested Readings |
Please refer the slides shared with the class!!!
A rational design process: How and why to fake it Parnas, David Lorge, and Paul C. Clements, Software Engineering, IEEE Transactions on 2 (1986): 251-257.
|
Week 7, Oct 6th, 2015; Morning and Afternoon Sessions
|
Design Continues...
Tip: time-boxing as a strategy for project management
How not to design user interface?
Never educate users in technical language
Software architecture - logical and physical perspecgtives
A brief overview of patterns and MVC pattern in specific
What are the disadvantages of MVC pattern - tradeoffs
Why you model? - To express design, share, implement, verify...
What to model? - state, behavior | What users want? (use cases) , How do you express your design solution? (class diagrams), How does interaction happen? (interaction diagrams) with examples
How to model? - UML as a notation!!!
4+1 Views - Class and Object Diagrams, Sequence Diagrams
|
Week 8, Oct 13th, 2015; Morning and Afternoon Sessions
|
Reflections on course till now
We revised all the learnings in this course as a pre-cursor to the mid exam. An amazing experience as most of the students remembered their favourite topics quite well
Primary idea is to [re] emphasize fundamentals in software engineering
|
Week 9, Oct 27th, 2015; Morning and Afternoon Sessions
|
Mid exam paper answer script discussion
Used today's class to discuss about the importance of modeling again
Design studio activity: students are asked to design a room that transforms into a living room in the morning, dining room in the evening and bedroom during night
an excalator that brings all the material into the room based on time, position to having a remote control to bring furniture into the room and transform it... interesting ideas
focus was on understanding the notion of modeling and to create class diagrams thereafter
|
Weeks 10, Oct 31st, 2015; Guest Lecture by Prof. Kesav V. Nori
|
Temples of Modern India: What are the temples for design of Indian education system?
This talk is a vision spreading across technology, engineering and management of education from several perspectives
|
12 days of Marathon [Devathon]: Weeks 10 and 11 from Oct 27th to Nov 9th 2015;
|
A life time experience. Almost 12 sleepless nights!!! technologies, startups, inspiration, enthusiasm, energy, fun, projects, SEFP and a lot more...
I monitored every team project's (there are 8 teams in total for 30 students) progress every 24 hours focusing on what they have done in the last 24 hours and what they will do in the next 24 hours... literally design and code review, direct intervention in terms of design and coding giving suggestions and sometimes even getting my hands dirty through technical solutions:) :)
For the first 48 hours, students just started working and the moment their points (marks) are made open, they know that they must deliver.
They resonded quite well and almost 70% of their projects are complete by the end of this exercise
Continuous talks throughout on all aspects of software engineering. Connecting foundations to practice in a rigourous way!!!
Wish to write about this experience to SIGCSE, many suggested that I must write :)
|
Week 12, Nov 17th 2015
|
classes cancelled because of floods
|
Week 13, Nov 24th 2015; Morning and Evening Sessions
|
Design continued!!! [Yet again!!! Yes, one of the the most critical foundations of software is design :) :)]
Based on feedback during intensive discussions with students and also mid exam, I continued discussion on design this week also
Three students drew their view of design on the white board and other students have to figure out what that design means?
Is it possible to understand design so easily?
How is it connected to requirements?
Is design primarily about decisions? Why do architects make those kinds of decisions?
How about rationale for these decisions?
How these decisions have impact on other facets of software development?
|
Weeks 14 and 15, for almost a week; [Because of floods]
|
Software Architecture: Foundations & Practice; Patterns; Anti-Patterns; Refactoring; Testing
A rigourous exercise on trying to understand software architecture
EssentiallyComponents, Connectors, Configurations, Constraints
Architecture styles: pipes & filters, blackboard, object-oriented, MVC, layered using the above C4 model
Patterns: Creational, Structural, Behavioural
Anti-Patterns: Primarily code smells, dead code...
Refactoring: Syntactic and briefly semantic
Testing: Unit testing, integration testing, system testing, application testing, regression testing, black box, white box
Is testing enough? verification, validation, proofs?
|