<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/css" href="../../MD.css"?>
<!DOCTYPE MD PUBLIC "http://www.cs.bham.ac.uk/modules/MD.dtd" "../../MD.dtd">

<MD code="18190" academic-yr="2007">

  <LastUpdate>15 Jan 2008</LastUpdate>

  <Aims>
    <Aim>
      present the fundamental concepts of imperative and object-oriented
      programming
    </Aim>
    <Aim>
      develop the skills needed to design, develop and document
      programs
    </Aim>
    <Aim>
      gain working knowledge of the Java programming language
    </Aim>
  </Aims>

  <Outcomes>
    <Outcome>
      explain and apply the fundamental constructs of imperative and
      object-oriented programming
      <Assessed>Coursework, examination</Assessed>
    </Outcome>
    <Outcome>
      describe and apply the main features of the Java programming language
      <Assessed>Coursework, examination</Assessed>
    </Outcome>
    <Outcome>
      analyse Java programs, for example by determining the behaviour of a
      program from its source code or by completing and/or correcting
      partially-written programs
     <Assessed>Coursework, examination</Assessed>
    </Outcome>
    <Outcome>
      write Java programs, where appropriate making effective use of an
      integrated development environment (IDE) and other programming aids
      <Assessed>Coursework, examination</Assessed>
    </Outcome>
    <Outcome>
      test and debug programs, interpreting compiler and run-time error messages
      <Assessed>Coursework</Assessed>
    </Outcome>
    <Outcome>
      design, develop and document complete Java programs to solve given
      software problems, including some open-ended tasks
      <Assessed>Coursework, examination</Assessed>
    </Outcome>
  </Outcomes>

  <Restrictions>
    <P>None</P>
  </Restrictions>

  <Prereqs>
    <P>None</P>
  </Prereqs>

  <Coreqs>
    <P>None</P>
  </Coreqs>

  <Teaching>
    <P>
      Lectures: 2-3 hrs/week, Tutorials/Examples classes: 1-2 hrs/week, Timetabled labs 
    </P>
  </Teaching>

  <ContactHrs>104 plus timetabled lab work</ContactHrs>

  <Assessment>
    <Normal>3 hr examination (80%), practical work (20%).</Normal>
    <Resit>Students who fail
      this module but achieve at least 30% will be allowed to
      resit, by examination only.  Students whose mark is below 30% will
      be required to repeat the module in the following academic
      year.</Resit>
    
  </Assessment>

  <Summary>
    A first module in imperative, object-oriented programming,
    with a strong emphasis on practical program development
    skills.
  </Summary>

  <Syllabus>
  <Topic>Induction. Basic use of the system (logging on, web browsing, email).
  </Topic>
  <Topic>Algorithms. Pseudocode in turtle graphics, numbers and life. Algorithmic constructs, aspects of "program".
  </Topic>
  <Topic>Introduction to Java - using NetBeans and skeleton files. Variables, expressions (int, double, bool); if.
  </Topic>
  <Topic>Repetition. for, while loops; arrays; using debugger; debugging techniques; loop invariants (as development tool).
  </Topic>
  <Topic>Static methods - as procedures and functions. Header comments including requires/ensures; structure of source code files; packages; API; java.lang.Math; using the Linux command line including arguments.
  </Topic>
  <Topic>Objects and classes. Instance members (fields, constructors, methods), instance invariants; creating and using objects; strings; primitive v. reference type.
  </Topic>
  <Topic>Interfaces. Type v. class; assert; Javadoc.
  </Topic>
  <Topic>Subclasses. Different applications including subclass to reuse features in existing class, subclasses to partition abstract superclass.
  </Topic>
  <Topic>Recursion. Basic use, mechanism (seen in debugger), designing recursive algorithms.
  </Topic>
  <Topic>Exceptions. Understanding error messages, exception objects, throw, try-catch.
  </Topic>
  <Topic>Case Study - of object architecture (e.g. model-view structure).
  </Topic>
  </Syllabus>
  
  <Books>
    <Book>
      <Title>Java Concepts (4th Ed)</Title>
      <Author>Cay Horstmann</Author>
      <Publisher>John Wiley</Publisher>
      <Year>2005</Year>
      <Comment>Horstmann's books are well written and with a good sense of what
is important.
For a few pounds more you can buy his "Big Java",
which is the same as this but with some extra
chapters covering topics that will be useful in year 2.</Comment>
    </Book>
    <Book>
      <Title>Introduction to Programming in Java</Title>
      <Author>Robert Sedgewick and Kevin Wayne</Author>
      <Publisher>Addison Wesley</Publisher>
      <Year>2007</Year>
      <Comment>Very good background reading. It is based on many really
interesting examples taken from various disciplines
including maths and physics, and also turtle graphics.</Comment>
    </Book>
  </Books>
  
  <Links>
    <P>
      <A href="http://www.cs.bham.ac.uk/internal/courses/java/fyw/">
	  First Year Workshop Web Page
      </A>
    </P>
</Links>

</MD>

