Archive for the Teaching category
What Should We Teach New Software Developers? Why? - CACM article by Bjarne Stroustrup
Posted on Tuesday, December 22, 2009 at 11:58 PM by Malcolm
Posted in General (RSS), Teaching (RSS)
Leap Year Bug in Microsoft Zune Player
Posted on Tuesday, January 06, 2009 at 12:45 PM by Malcolm
On December 31, 2008, every Zune 30 device freezes due to a leap year bug in a driver from Freescale Semiconductor in a "while loop". Obviously a leap year test case is not carried out on the driver. See this article for details. Edited on: Tuesday, January 06, 2009 3:20 PMPosted in General (RSS), Teaching (RSS)
Oxford and Cambridge offer lectures on Apple's iTunes
Posted on Wednesday, October 08, 2008 at 10:21 AM by Malcolm
The universities of Oxford and Cambridge are to make lectures by well-known academics available through Apple's iTunes.More than 150 hours of free audio and video podcasts from the University of Oxford are now available on a new site on iTunes U.
Cambridge on iTunes U offer more than 300 audio and video tracks covering a broad range of themes; delve into the Enron scandal, take a guided tour of the exhibitions at the Fitzwilliam museum by leading experts, and listen to the regular contributions from the St John's College choir - all without having to leave your house!
Edited on: Wednesday, October 08, 2008 10:22 AM
Posted in General (RSS), Teaching (RSS)
Design Patterns - Broker, Generator and Reactor Design Patterns
Posted on Thursday, September 21, 2006 at 11:28 AM by Malcolm
- Broker Design Pattern
- The Facade Pattern
- The Mediator Pattern
- The Adaptor Pattern
- The Proxy Pattern
- Generator Design Pattern
- The Factory Pattern
- The Singeton Pattern
- The Prototype Pattern
- Reactor Design Pattern
- The Command Pattern
- The Observer Pattern
JUnit Testing
Posted on Thursday, August 10, 2006 at 7:46 PM by Malcolm
Command line tool to run test
The JUnit package has q command line based tool to run tests.
> java junit.textui.TestRunner [-wait] TestCaseClass
TestRunner expects the name of a TestCase class as argument. If this class defines a static suite method it will be invoked and the returned test is run. Otherwise all the methods starting with "test" having no arguments are run.
When the wait command line argument is given TestRunner waits until the users types RETURN.
TestRunner prints a trace as the tests are executed followed by a summary at the end.
Posted in General (RSS), Teaching (RSS)
Unified Modelling Language (UML)
Posted on Saturday, May 20, 2006 at 12:16 AM by Malcolm
Links on UML- Wed Yourself to UML with the Power of Associations
- Wed Yourself to UML with the Power of Associations, Part 2
- UML Overview by by Mandar Chitnis, Pravin Tiwari, Lakshmi Ananthamurthy
- The Diagrams of UML 2.0 by Scott W. Ambler
- UML 2.1.2 Superstructure Specification
Posted in General (RSS), Teaching (RSS)
Software Engineering - Tools, Resources, Articles
Posted on Thursday, May 04, 2006 at 12:48 AM by Malcolm
Software Engineering Tools
- Ants - Ant is a Java-based build tool. In theory, it is kind of like Make, without Make's wrinkles and with the full portability of pure Java code.
- Cobertura - Cobertura is a free Java tool that calculates the percentage of code accessed by tests. It can be used to identify which parts of your Java program are lacking test coverage. It is based on jcoverage.
- Emma - EMMA is an open-source toolkit for measuring and reporting Java code coverage. EMMA distinguishes itself from other tools by going after a unique feature combination: support for large-scale enterprise software development while keeping individual developer's work fast and iterative. Every developer on your team can now get code coverage for free and they can get it fast!
- JavaNCSS - Ever wondered how many lines of code or how many classes there are in the Sun JDK? Curious about the size of your own projects - or do you want to keep track of your work-progress. That's what JavaNCSS is for. JavaNCSS is a simple command line utility which measures two standard source code metrics for the Java programming language. The metrics are collected globally, for each class and/or for each function.
- Jester - The JUnit test tester. Jester finds code that is not covered by tests. Jester makes some change to your code, runs your tests, and if the tests pass Jester displays a message saying what it changed. Jester includes a script for generating web pages that show the changes made that did not cause the tests to fail.
- Clover - Clover measures code coverage generated by system tests, functional tests or unit tests, allowing you to improve test quality and find bugs sooner.
- A list of static source code analysis tools for C
- Junit.org - This site is dedicated to software developers and testers using the JUnit testing framework. In addition to the latest news and download links for JUnit, you can find answers to questions about automated testing, tools and extensions for JUnit, and articles on Test Driven Development and other testing topics.
- httpunit.org - Written in Java, HttpUnit emulates the relevant portions of browser behavior, including form submission, JavaScript, basic http authentication, cookies and automatic page redirection, and allows Java test code to examine returned pages either as text, an XML DOM, or containers of forms, tables, and links. When combined with a framework such as JUnit, it is fairly easy to write tests that very quickly verify the functioning of a web site.
- EasyMock - EasyMock provides Mock Objects for interfaces in JUnit tests by generating them on the fly using Java's proxy mechanism. Due to EasyMock's unique style of recording expectations, most refactorings will not affect the Mock Objects. So EasyMock is a perfect fit for Test-Driven Development.
- Refactoring - This site is a simple portal for information about refactoring. There is a list of sources of information about refactoring, including various books that have been written.
- User Interface Design Patterns - This collection consists of user interface design patterns (interaction patterns) that seems to be recuring problems when trying to make design based on the user’s goals. These design patterns have been analyzed during the past five years by going through hundreds of designs, to give instructions and design examples to the students of design courses at the University of Helsinki, Dept. of Computer Science.
- A Summary of Principles for User-Interface Design - This document represents a compilation of fundamental principles for designing user interfaces, which have been drawn from various books on interface design, as well as the author's own experience. Most of these principles can be applied to either command-line or graphical environments.
- User Interface Design Tips, Techniques, and Principles - A fundamental reality of application development is that the user interface is the system to the users. What users want is for developers to build applications that meet their needs and that are easy to use. Too many developers think that they are artistic geniuses – they do not bother to follow user interface design standards or invest the effort to make their applications usable, instead they mistakenly believe that the important thing is to make the code clever or to use a really interesting color scheme. Constantine points out that the reality is that a good user interface allows people who understand the problem domain to work with the application without having to read the manuals or receive training.
- DreamSpark - Microsoft professional-level developer and design tools provided at no charge for students
- Struts Framework - An open source framework for building Servlet/JSP based web applications based on the Model-View-Controller (MVC) design paradigm. A free pdf version of book "Starting Struts 2" is available at here.
- JSP Tutorial - This tutorial teaches JSP by progressing from very simple examples to complex examples.
- AJAX Tutorial - AJAX Tutorial for Java Programmers
- In pursuit of code quality: Don't be fooled by the coverage
- In pursuit of code quality: Monitoring cyclomatic complexity
- User Interface Design for Programmers - Chapters 1-9.
- Innovative user interface design
- User Interface Design - Taking the Good with the Bad
Edited on: Monday, August 10, 2009 7:34 PM
Posted in General (RSS), Teaching (RSS)
Teaching - Software Engineering, Operating Systems
Posted on Wednesday, January 04, 2006 at 9:23 PM by Malcolm
Courses taught in 2010 Semester 2
- CSC207 - Software Engineering
- CSC/CPE203 - Software, Systems and Models
Courses taught in 2010 Semester 1
- CSC207 - Software Engineering
- CM104 - Reasoning with Objects
- CSC/CPE203 - Software, Systems and Models
Courses taught in 2009 Semester 2
- CSC207 - Software Engineering
- CM104 - Reasoning with Objects
Courses taught in 2009 Semester 1
-
CSC207 - Software
Engineering I
Lab project groups:
Courses taught in 2008 Semester 2
-
CPE207 - Software Engineering
Topics covered in this course include the following:- UML 2.0
- Software Development Lifecycle (SDLC)
- Project Management
Courses taught in 2008 Semester 1
-
CSC207 - Software
Engineering I
Lab project groups: All project groups work on the project "Online Vehicle Tracking and Dispatching"
Courses taught in 2007 Semester 2
-
CSC207 - Software Engineering I
Lab project groups
Courses taught in 2007 Semester 1
-
CSC207 - Software Engineering I
Lab project groups- Library Management System
- Human Resource Management System
- Stocks Analysis and Trading System 2007
- Online Survey System
- Automated Courier Tracking System
- CSC205 - Operating System
Courses taught in 2006 Semester 2
Courses taught in 2006 Semester 1
- CM104 - Reasoning with Objects
- CSC207 - Software Engineering I
- CSC205 - Operating System