SENG 403: Software Development in Teams and Organizations Winter 2012 |
Topic 1: Innovation in the software industry |
|
From a software engineering perspective, study the common themes that enabled companies like Google and Facebook to shine and become leaders in their markets. Discuss the impact of the work environment and the software engineering practices on their success. |
|
Topic 2: Open-source software development |
|
Discuss the technical and human aspects of open-source development as evident in influential projects like Firefox, Eclipse, and Open-Office. Why do people contribute to these projects, and what are the challenges? |
|
Topic 3: Development with Ruby-on-Rails |
|
Many companies nowadays are resorting to Ruby-on-Rails for fast, yet reliable, web development. Discuss the basic principles behind Ruby-on-Rails, and give a step-by-step tutorial to introduce the technology to your classmates. |
|
Topic 4: Software architectural styles |
|
“Be creative, but don’t reinvent the wheel.” Discuss the common architectural styles (aka. patterns) that can be reused to solve similar problems in the software domain. For each style, give a concrete example and discuss pros and cons. |
|
Topic 5: Game development |
|
Discuss how game development is different in terms of requirement elicitation, design, and testing. Where does the creative interaction design process fit in? What are some commonly used frameworks for game development? |
|
Topic 6: Aspect-oriented programming (AOP) |
|
The stated goal of AOP is to increase modularity of software systems. Discuss the differences between AOP and object-oriented programming, and give an introductory step-by-step tutorial on how to use AspectJ to write aspect-oriented code. |
|
Topic 7: Service-oriented software |
|
Web 2.0 is arguably an immediate product of service-oriented development. Discuss how loosely-coupled services can be used to create mash-ups, and give a step-by-step tutorial on how such services can be published and consumed. |
|
Topic 8: Software security |
|
Discuss the security measures that can be taken to assure secure software development and secure products. Also, discuss where software vulnerabilities come from and give concrete examples of vulnerabilities at the code level. |
|
Topic 9: Clean code |
|
Writing code that can be understood, tested, maintained, and reused by others for years to come is not straightforward. Use concrete examples to illustrate how developers can write clean code and refactor bad code. |
|
Topic 10: Change management and negotiation |
|
So you want to change how things are being done in your team or organization – how challenging can that be? Discuss how positive change can be introduced and negotiated effectively with superiors, colleagues and subordinates. Try to provide concrete examples stemmed from real case studies. |
|
Topic 11:
Programming language families |
|
Programming languages are often divided into 4 families: Procedural languages (eg Pascal), object-oriented languages (eg Java, C++, and also the object-based languages, eg BETA), logic Languages languages (eg Prolog), and functional languages (eg Lisp, Miranda). Discuss what the differences are between these families, giving simple examples, and what the utility, benefits, and drawbacks of each of these are with respect to software engineering projects. |
First draft is submitted on time | 5% |
The paper covers the topic comprehensively | 50% |
The paper is well-written and well-structured | 10% |
The paper conforms to the formatting guidelines | 10% |
The topic is presented in-class clearly and creatively | 25% |
Last updated 2013-01-07 22:02 |