I'm currently doing the MSC Advanced Software Engineering as UCD. So far
(for the modules I've done) I've found the course well lectured and of a
high standard.
Most of the teaching staff and post grad demonstrators are familiar with
Linux and often run some variant on their laptops. From what I can tell of
the undergrad course most have their own laptops and some run flavours of
Linux. I think that the support guys seem to have some knowledge in Linux. I
know that lots of the postgrad notes refer to UNIX concepts and would talk
about commands like 'top' etc. It's been a long time since I was an
undergrad, but in those days you could not do a computer science course with
out becoming familiar with UNIX. I don't think that the modern undergrad
courses are much different. So I'd be quite happy turning up with a Linux
laptop on a first day. It's worth getting familiar with different
development environments (Eclipse, Netbeans etc). It's also worth knowing
what they do behind the scenes as you may need this one day. I still do a
lot of work with vi (or similar) and build tools (make, ant etc).
It does look like most university courses use Java very heavily (C++ was the
trend when I was an undergrad). There are lots of good books other have
recommended. I would say it's worth reading some good books on good software
engineering, algorithms, patterns, refactoring (some good ones already
suggested). UCD has a good computer science section in the libary - access
to this is worth a lot on it's own. I'd also say that good software
engineering is best learned on the job. Pick a small project and design, and
develop it, maybe look at some interesting open source stuff that you'd be
able to contribute too (even just start with bug fixing). When I'm learning
a new language I always write a simple file hex editor (as it teaches you
file handling, most of the language concepts and constructs, screen handling
etc), and move on from there. It's also worth remembering to not just get
stuck in the rut of knowing one language. Most good software engineers try
to pick up a new language or technology at least once per year. So whilst
you may focus on Java (or similar) don't be afraid to look into others e.g.
Python, Eiffel, Haskell, Self (or what ever takes your fancy).
Enjoy it learning is a great experience (and one that's becoming a bit of a
luxury these days).
Regards
Jag
On Sun, Mar 8, 2009 at 7:22 AM, Josh Glover <jmglov at gmail.com> wrote:
> 2009/3/6 Conor Mac Aoidh <conormacaoidh at gmail.com>:
>> > What I wanted to ask is does anyone here know of any books that would
> > concentrate on learning Java using Linux? I'm sure once I get to grips
> with
> > the basics that I will be able to show the Windows users how much easier
> it
> > is to program with Java on Linux!
>> As others have rightly pointed out, Java is Java, regardless of the OS
> on which it is running. And most of the Java tools are written in
> Java, meaning that they will run on any platform Java itself does.
>> Here's my advice, which is similar to advice that others have given you:
>> 1. Get yourself a Linux machine to do *all* of your work on. Get rid
> of Windows entirely if you have not already. I'm sure UCD has a
> Windows machine somewhere that you can use if you ever *have* to, but
> now is the perfect time to force yourself to learn how to do
> everything on Linux that you were in Windows.
>> 2. Install Eclipse on said machine. For my money, there is no better
> Java development environment than Eclipse, and this is coming from a
> long-time XEmacs user who hates IDEs as a rule. Eclipse is the
> exception, at least for Java development. The automatic code
> generation and refactoring tools mean a lot of the boilerplate code
> that Java (and to some extent, good Object Oriented design) forces you
> to write gets written for you, removing a potential source of errors
> and a lot of tedium.
>> 3. Beg, borrow, or steal (or just buy) the following books:
> a. "The Java Programming Language", Arnold, Gosling, Holmes;
> (http://www.amazon.co.uk/dp/0321349806) - This is *the* book on Java.
> Short, precise explanations of every feature of the language, written
> by the actual designers of the Java language.
> b. "Test-Driven Development", Beck;
> (http://www.amazon.co.uk/dp/0321146530) - This is an excellent little
> book (240 pages, of which you only *really* need to read 120 or so)
> that will teach you how to write effective unit tests, and to write
> them *before* you write the section of code that they are testing.
> Crazy, right? Since you're just starting out with Java, you have a
> great opportunity to establish some good habits that more experienced
> programmers have to work hard for many months to overcome (speaking
> from personal experience with TDD).
> c. "Refactoring: Improving the Design of Existing Code", Fowler;
> (http://www.amazon.co.uk/dp/0201485672) - this book will teach you how
> to improve your existing code, and plays nicely into the Test-Driven
> Development practice. As you organically grow your code with TDD, you
> need to constantly refactor. Refactoring and TDD combined give you the
> confidence to take huge design risks, knowing that you can just
> refactor them away if they go awry.
> d. "Design patterns : elements of reusable object-oriented software",
> Gamma, Helm, Johnson, Vlissides;
> (http://www.amazon.co.uk/dp/0201633612) - sometimes called the Gang of
> Four (or GoF) book, this book will teach you patterns that can be
> applied to many different problems throughout your programming career,
> regardless of language or problem domain.
> e. "The Pragmatic Programmer", Hunt, Thomas;
> (http://www.amazon.co.uk/dp/020161622X) - this book gives you a lot of
> general tips and some specific ones as well on Getting Things Done,
> and Doing The Right Thing. In combination these two traits equal
> Pragmatism.
>> 4. http://java.sun.com/new2java/ has a lot of great resources on
> getting started with Java, including The Java Tutorials
> (http://java.sun.com/docs/books/tutorial/index.html), which will give
> you example-driven lessons that put most "Learn Java in 21
> Minutes"-type books to shame.
>> 5. If you wanna, consider a student membership to the IEEE:
>>http://www.ieee.org/portal/site/mainsite/menuitem.818c0c39e85ef176fb2275875bac26c8/index.jsp?&pName=corp_level1&path=membership&file=styp.xml&xsl=generic.xsl>>> The advice I have given is not the fastest way to learn Java, but it
> is a good way to become a software engineer who knows Java inside and
> out. I leave it to you to judge which path is more valuable in the end
> (hint: Yoda was a software engineer, but Darth Vader was just a
> coder). ;)
>> --
> Cheers,
> Josh
> --
> Irish Linux Users' Group mailing list
> About this list : http://mail.linux.ie/mailman/listinfo/ilug> Who we are : http://www.linux.ie/> Where we are : http://www.linux.ie/map/>
Maintained by the ILUG website team. The aim of Linux.ie is to
support and help commercial and private users of Linux in Ireland. You can
display ILUG news in your own webpages, read backend
information to find out how. Networking services kindly provided by HEAnet, server kindly donated by
Dell. Linux is a trademark of Linus Torvalds,
used with permission. No penguins were harmed in the production or maintenance
of this highly praised website. Looking for the
Indian Linux Users' Group? Try here. If you've read all this and aren't a lawyer: you should be!