Software Developer Position in SIT

I have a software developer position availabe in SIT to work on a one year project with National Health Group Polyclinic to develop a Nurse Scheduling System. The job scope will involve programming work using JSP and MySQL. Please email your CV to malcolm.low{at}singaporetech.edu.sg if you are interested to apply for this position.

Advertisements

Chinese Computer is the world’s fastest – and without using US chips

A Chinese supercomputer built using domestic chip technology has been declared the world’s fastest. The news highlights China’s recent advances in the creation of such systems, as well the country’s waning reliance on US semiconductor technology. Read the rest of the article here.

Software Engineering – Tools, Resources, Articles

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

Software Engineering Resources

  • 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

Software Engineering Articles

Software Engineering Books

Flying Math: Bees Solve Traveling Salesman Problem

Bumblebees foraging in flowers for nectar are like salesmen traveling between towns: Both seek the optimal route to minimize their travel costs. Mathematicians call this the “traveling salesman problem,” in which scientists try to calculate the shortest possible route given a theoretical arrangement of cities. Bumblebees, however, take the brute-force approach: For them, it’s simply a matter of experience, plus trial and error, as reported in this Wired article.

Unit Testing: Is There Really Any Debate Any Longer?

On a panel several years ago, Dr. Dobbs’s editor-in-chief Andrew Binstock was asked what was the greatest benefit that Agile had delivered to him personally. It took him no time to respond “unit testing.”

While this answer is not historically accurate — unit testing precedes the Agile movement — it’s clear that the Agile exponents made it a widespread practice. In large part, because of Kent Beck’s lapidary JUnit implementation, which has been widely copied to most major languages.

The specific benefit Andrew — and many other developers — have enjoyed is quite simply less time spent in the debugger. Today he writes code and then he writes unit tests that exercise the edge cases and one or two main cases. Right away, Andrew can tell if he missed something obvious or if his implementation has a slight burble that mishandles cases he expected to flow through easily.

Read the rest of this artcile here.