March 3, 2004

Bulk view

Java and OO Best Practices

This is in no way a comprehensive discussion on Java and OO Best
Practices. This is a subset of the knowledge we pass around with each
other. All of this is subject to programmer opinion and there’s a lot
more that needs to be learned.

bad practices (“code smells”)

– duplicate code
Have you ever copy-pasted your code?
Follow the “Once and Only Once” rrule.

– accessible fields

Tight coupling, corruptible, inflexible.
Should have accessors and mutators.
Problems with threading.

– large class

A class should only be doing one thing. Follow the “one
responsibility rule.”

– large method
– using magic literals
– unnecessary class/instance variables

If it’s only used in one method, make it local

– Initializing strings with “new”
– Using floats and doubles for currency calculations
– Returning null
– Subclassing for functionality
– Muffling exceptions
– Unexceptional exceptions
– Excessive use of switches
– Middle man: methods that just delegate to other classes. Case of over-design.

good practices
– validate your parameters
– abstract or final
– create local copies to prevent corruption (hmm… good for multithreading, but heck slow)
– String, string buffer
– favor immutability (now, there’s a thought…)

software engineering best practices

Note to self: should have webcam-based project that tracks red laser pointer.

What would be a fun blog visualization hack to see if I can still get the hang of it?

– Download the XML feeds for my blog and my friends’ blogs, hacking RSS exports for them if necessary.
– Perform either Bayesian or Kohonon self-organization clustering on the topics.
– See how the topics cluster and who posts on what.
– Figure out, based on that, where my interests lie…
– … and alert me when new posts are made that are close to those topics.

Possible research areas

– Wearable computing: I’m interested in things like Bradley Rhodes’

Remembrance Agent. I’d like to extend it to dynamically index new
work and integrate more information sources.

– Intelligence/memory augmentation: Technical support assistance.

– Computer science education: Modelling of student misconceptions

based on a corpus of programs

– Social network analysis: Visualization of social networks

For augmentation, this is interesting: If I could tie
together my interest in augmentation with the Semantic Web, that would
be quite cool.

Monash university

Postgraduate handbook 2004 Information Technology

Doctor of Philosophy

Course code: 0190 + Caulfield, Clayton, Gippsland, Berwick and
Peninsula + School coordinators: Dr Leonid Churilov (Business
Systems), Dr Graham Farr, Dr David Squire (School of Computer
Science and Software Engineering), Dr Graeme Johansen (School of
Information Management and Systems), Dr Manzur Murshed (Gippsland
School of Computing and Information Technology), Dr Marian Quigley
(School of Multimedia Systems) and Dr Asad Khan (School of Network

The Faculty of Information Technology offers a Doctor of Philosophy
(PhD) program by research in each of the academic units of the
faculty, across five of the university’s campuses. The degree is
awarded for a thesis which, in the opinion of the examiners, makes a
significant contribution to knowledge or understanding of any field
of study with which the university is directly concerned. The award
of the degree is generally accepted as showing that the candidate is
capable of carrying out independent research.

Areas for research include graphics and image processing, artificial
, inductive inference, parallel and persistent computer
architectures, systems analysis and design methodologies,
knowledge-based systems, knowledge management, information systems
management, inter-organisational systems, data modelling, electronic
commerce, computer-assisted software engineering, programming
paradigms and languages, object-oriented systems, formal
specification, software metrics, decision support systems, executive
information systems, network computing, computer and network
security, human-machine interfaces, distributed systems, information
storage and retrieval, robotics, digital communications,
microelectronic circuit design, digital systems design, and
librarianship, archives and records, network security, multimedia
authoring, mobile and distributed computing systems, image
processing and computer vision, multimedia computing and
communication, electronic data interchange and internet commerce,
multimedia standards and protocols, multimedia interfaces, GUI
design and programming, multimedia applications in teaching and
, multimedia narrative, animation, game design and
development, creating content in digital environments, societal
implications of multimedia.

The degree is usually undertaken on a full-time basis over three
years. Part-time studies are available on conditions approved by the
PhD and Scholarships Committee.

In appropriate circumstances, enrolment for a masters degree by
research may be converted to enrolment for a PhD.

Entry requirements

The minimum qualifications for admission to PhD candidature are: (a)
a bachelors degree requiring at least four years of full-time study
and normally including a research component in the fourth year,
leading to an honours degree at first or upper second class level
(HI or HIIA); or (b) a course leading to a masters preliminary
qualification at a level rated by the relevant school and faculty as
equivalent to a first or upper second class honours degree; or (c) a
masters degree that comprises a significant research component, at
least equivalent to (a) above.

The degree of Doctor of Philosophy (PhD) at Monash signifies that
the holder has completed a course of postgraduate training in
research under proper academic supervision, and has submitted a
thesis that the examiners have declared to be a significant
contribution to knowledge, and that demonstrates the candidate’s
capacity to carry out independent research.

For further information about the PhD program and attendance
requirements, contact the Monash Research Graduate School in the
Research Services Division of Monash University, Clayton campus.

For further information about the research interests of each school
within the faculty, refer to the section titled `School
information’. School coordinators can provide advice and information
about research topics and supervision.

Applications for PhD candidature can be made at any time of the year
and application forms are available from the faculty offices.

“Visually Impaired Can Now ‘Surf’ Internet Thanks to Indian Software”

More than a hundred visually-impaired children in India are using software
that lets them surf the Internet. The software product, called Vachantar,
is being used by students at the Government High School for Blind Girls in
the south Indian state of Andhra Pradesh. Developed by the Center for …

Note: Stuff like this has been around for a while, though. =)

E-Mail from [email protected]