The University of Aberdeen
The Computing Science Department

Readings and Links (Academic Session 2012-2013):

Books:

Course Text

CHANGES HAPPENING: Can use programming language you want from amongst Java, Ruby and C# (.NET). Focus therefore shifts to broader issues from implementation and leaves languages to the side.
Will need to look at something like Cloud Computing Explained (good for more depth), or Brief Guide to Cloud Computing (basic overview) for general background Economist report on cloud computing look at menu on right for list of articles in the report.

Software Development: Given that 50% of your course mark is based on one application, you should download and read the scrum & XP book, which will explain how to run your development phase and keep you sorted about who is developing what during this term.

The Kanban-scrum book will help you manage the workload so that you don't try to do too much at once.

 Look at these for background reading. The others are in the library, and you can also use Safari Online to read PDFs of books.  You will need to set your browser to use the university proxy when off campus for this to work.

For Ruby and Rails go see the 'Ruby and Rails' book and website list.

For Java based apps go see the 'Java' book and website list

Spring in Action (2nd Edition) by Craig Walls, Ryan Breidenbach, published by Manning Publications 2007
          £35.99 paperback 1933988134 - ON SAFARI 

In the book you want to look at Part One (possibly ignoring ch 3), and in Part Two look at ch 5 on JDBC and ch 6 on transactions with JDBC, and ch 7 on security. In Part Three look at chapters 13 and 14, and look at the appendix for testing, and get the PDF appendices from the web site.

Pragmatic version control using git

Pragmatic Version Control using Git by Travis Swicegood 200 pages, Dec 2008
ISBN: 978-1-93435-615-9 tells you all that you need to know about the basics of using git for your version contol so that you don't lose your work, and can easily manage branches of projects and know how to merge them as needed.

programming Amazon Web Services

Programming Amazon Web Services - S3, EC2, SQS, FPS, and SimpleDB by Murty, James., published by O'Reilly Media, US/Ingram Pub Services 2008
          £30.99 paperback 0596515812 - ON SAFARI


Mobile Web 2.0 cover

Mobile Web 2.0
by Ajit Jaokar and Tony Fish
http://mobileweb20.futuretext.com/

Excellent book on mobile web applications and their implications for the future. While some is from the business perspective there is also lots here for developers to think about.

Mobile Web Design by Cameron Moll

Mobile Web Design
by Cameron Moll
http://mobilewebbook.com/

THE book on mobile web design, with all the issues covered and pointers on problems you'll encounter. In the end though as much about the issues as about the technology. Very readable and easy to follow.
By the book as a PDF with your name on it, and you'll have it in an hour or so at a reasonable price of about £12.00

Dotmobi developer's guide

dotMobi Developer's Guide
by Brian Fling, et.al
http://dev.mobi/node/197

This is the free 'version' and a perfect companion to the Moll book above. This is the 'best practice' as suggested by the people in charge of the .mobi domain. You only need to register at the site to get the book, or to use the web page version online.

Spring Framework

Spring Framework: http://springframework.org/ use 3.1.x version and you’ll find a number of tutorials, articles, and other help there too. The Spring Tool Suite (an IDE) is also available and provides a plugin for work with Spring applictions inside Eclipse.

You will also find more Spring project documentation for its various sub-projects on their own sites. Under 'security' for example, you'll find what you need to know about authentication for logins, and other details. You might also want to look at the details for Spring IDE.

Amazon Web Services

We'll be using the tools and resources of Amazon Web Services throughout the term, so get yourself an account, and review the documents and resources of the main site. I'll add most of the important links here, and don't forget the books above which are in Blackwells and via SafariOnline.

Amazon Developer Connection provides lots of links by topic and tool, as well as by programming language.

Scalability and High Performance

IBM High Performance Site  with lots of case studies and guides http://www-128.ibm.com/developerworks/websphere/zones/hipods/

High Scalability - site full of useful case studies and condensed 'take away notes' http://www.highscalability.com/

The Mobile Web:

Planet Mobile Web - group blog pulling together many good mobile web blogs

W3c Mobile Web Initiative - http://www.w3.org/Mobile/ The pdf's of a number of presentations are here as are proposed specs.

Cameron Moll's series on designing for mobiles http://www.cameronmoll.com/archives/000398.html This is a good starting point on what your options are for dealing with mobile users, and offering tips and tricks on development.

Russell Beattie (one of Yahoo's top mobile guys) comments on mobile issues in general. In particular he did one story on the 'sad state of the mobile web' and followed it up with another on 'getting to the mobile web'. If you want a good perspective on mobile issues, then follow his blog.

Nokia Mobile Internet Toolkit, which includes appropriate editors and a WAP gateway and mobile device simulators. Also look at Forum Nokia Getting Started in XHTML pages.

Check Cameron Moll's Mobile Markup Test pages to see how your targetted device(s) will interpret CSS and XHTML, and look at his 'tips and tricks' page with a useful list of resources at the bottom of the page.

The WAP 2.0 (and 1.0) spec http://www.openmobilealliance.org/tech/affiliates/wap/wapindex.html is found at the Open Mobile Alliance.

Web Developer Extension for Firefox adds many configurable aspects to pages, including a small screen renderer

Get the User Agent Switcher plugin for Firefox that will let you pretend you're on a mobile client so that you can browse these sites via a PC. A list of USER_AGENTS for mobile devices can be found at Mobile Browser ID Strings, which you then put into the plugin and then find the mobile site that you want to spoof and browse.

mobile emulators provide basic idea of what page will look like in mobile browser: try the one from google, and you can also get the user agent switcher for firefox, and then add the wmlbrowser plugin, so that firefox knows how to handle wml files. You can also look at Google's browser size page, to show you how much of your page people can see as it is with a normal browser.

W3C Mobile Web Initiative has a number of useful pages, presentations, and tools page, with links to validators, converters, etc.

Web 2.0

Wikipedia page http://en.wikipedia.org/wiki/Web_2.0

Web 2.0 APIs listing http://www.programmableweb.com/apis

There is quite a discussion in the blogosphere about whether the notion of a 'Web 2.0' is just so much market hype, or actually amounts to a shift in the web itself. Some of the good discussions follow the thread between Tim Bray's Not 2.0 piece and Tim O'Reilly's Not 2.0? reply. Also be sure to read the comments in both pieces, and then Bray's Web 2.0 or Not? reply. And now we also have Tim O'Reilly's next article in the discussion 'What is Web 2.0', which will no doubt provoke further debate.

Design Patterns

InfoQ video of presentation about Guardian web design change based around the domain and how it's built around 'models'.

Java Blueprints (patterns by another name) http://java.sun.com/reference/blueprints/index.html in particular you want to look at the Solutions Catalogues and Core Patterns

Java J2EE Patterns (under the Blueprints) section http://www.oracle.com/technetwork/java/blueprints-141945.html this takes you straight to what you need

Patterns Home Page http://hillside.net/patterns/

Portland Pattern Repository http://c2.com/ppr/index.html

Testing

Scott Ambler has a good discussion about the cost of change and how to flatten it with tests and other processes.

Use Cucumber and suitable flavour to work with your language if you're not using Ruby Java .NET Python

Use Selenium for testing the browser side of the project. You can also watch a good overview 36min video of Selenium that explains its background. You should also be using whatever is suitable for your own programming language, whether it be Java, Ruby, Python or .NET.

Use Jenkins or CloudBees for online versions of Jenkins as the centerpiece of your contiuous integration process. This handy tool will monitor the code checked into the group repository and see that it runs correctly.