<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE document PUBLIC "-//CNX//DTD CNXML 0.5 plus MathML//EN" "http://cnx.rice.edu/cnxml/0.5/DTD/cnxml_mathml.dtd">
<document xmlns="http://cnx.rice.edu/cnxml" xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="id8101641">
  <name>Syllabus</name>
  <metadata>
  <md:version>1.1</md:version>
  <md:created>2007/09/03 04:40:37.769 GMT-5</md:created>
  <md:revised>2007/09/03 04:48:52.374 GMT-5</md:revised>
  <md:authorlist>
      <md:author id="votrunghung">
      <md:firstname>Hung</md:firstname>
      <md:othername>Trung</md:othername>
      <md:surname>VO</md:surname>
      <md:email>Hung.Vo-Trung@ud.edu.vn.vn</md:email>
    </md:author>
  </md:authorlist>

  <md:maintainerlist>
    <md:maintainer id="votrunghung">
      <md:firstname>Hung</md:firstname>
      <md:othername>Trung</md:othername>
      <md:surname>VO</md:surname>
      <md:email>Hung.Vo-Trung@ud.edu.vn.vn</md:email>
    </md:maintainer>
  </md:maintainerlist>
  
  <md:keywordlist>
    <md:keyword>Software engineering</md:keyword>
  </md:keywordlist>

  <md:abstract>This is a syllabus of the Software Engineering course for IT students.</md:abstract>
</metadata>
  <content>
    <section id="id-03243696613">
      <name>Description </name>
      <para id="id8986133">Software engineering is a very broad field. It encompase virtual everything a person might want to know in order to develop software - software that is correct, on time, and on budget. Most other computer science courses emphasize the technical foundations of software development, such as programming, algorithms, data structures, languages, etc. </para>
      <para id="id8986143">This course focusses on the pragmatic aspects, such as requirements analysis, cost estimation, design, team organization, quality control, configuration management, verification, testing, and maintenance. Students work in teams on projects for real clients. This work includes a feasibility study, requirements analysis, object-oriented design, implementation, testing, and delivery to the client. Additional topics covered in lectures include professionalism, project management, and the legal framework for software development.</para>
    </section>
    <section id="id-0636346029467">
      <name>Prerequisites </name>
      <para id="id8986164">The formal prerequisites for this course are Programming Languages (C/C++, Perl, Java, .Net,…), Data Structures and Algorithms, and Database Management Systems.</para>
      <para id="id8986174">The following are the specific capabilities you will need from the prerequisite courses:</para>
      <list type="bulleted" id="id8986180">
        <item>experience with the software development process </item>
        <item>skill in independent programming and problem solving </item>
        <item>skill using an object oriented language </item>
        <item>mathematical maturity, including at least: <list type="bulleted" id="id8986206"><item>methods of proof: induction, cases </item><item>elementary formal logic: working with formulae using logical connectives, quantifiers, modus ponens, implication, satisfaction </item></list></item>
        <item>finite state machines: state diagrams, state tables, reachability </item>
        <item>formal languages: BNF, regular expressions</item>
      </list>
    </section>
    <section id="id-729792205009">
      <name>Organization</name>
      <para id="id8986238">Class sessions will be a combination of lecture and seminar formats, with the occasional lab or film viewing. We'll cover the course's primary topics in these sessions, with reading and homework assigments that provide opportunities to gain a deeper understanding of the underlying issues and techniques of software engineering. Actual labs and software development projects will provide a hands-on approach to exploring these topics throughout the semester. Given that this is a 3 credit course, it is expected that you will spend an average of 10 hours per week (including in-class and lab time) on the course and related material for the duration of the semester.</para>
    </section>
    <section id="id-463714223042">
      <name>Readings</name>
      <para id="id8986262">Here are some general books on software engineering:</para>
      <list type="bulleted" id="id8986267">
        <item>Sommerville, Ian, Software Engineering, Eighth Edition. Addison-Wesley , 2007.</item>
        <item>Roger S. Pressman: Software Engineering - A Practitioner's Approach, Sixth Edition, McGraw-Hill, ISBN 007-123840-9</item>
        <item>Pfleeger, Shari Lawrence, Software Engineering Theory and Practice, second edition. Prentice- Hall 2001. </item>
        <item>Bernd Bruegge and Allen H. Dutoit, Object-Oriented Software Engineering Using UML, Patterns and Java, Second Edition. Prentice Hall, 2004.</item>
      </list>
    </section>
    <section id="id-428854413388">
      <name>Grading Plan</name>
      <para id="id8986312">Since software engineering is a broad subject matter, mastery of the topic as covered by the scope of our course can be manifested in a variety of ways. Your grade in the course will be based on your achievement of the course objectives as demonstrated in your homework assigments, programming deliveries, and participation in class discussions.</para>
      <para id="id8986322">Course component grading weight :</para>
      <list type="bulleted" id="id8986330">
        <item>Exercises: 40% </item>
        <item>Group Software Project: 50% </item>
        <item>Participation: 10% </item>
      </list>
    </section>
    <section id="id-281741635497">
      <name>Suggestions for Success</name>
      <list type="bulleted" id="id8986365">
        <item>Make sure you know what you want to get out of the course before you get very far into it; there are lots of directions to go in, and having a focus will help to inspire you </item>
        <item>Update your journal often; use it as a tool to develop / explore ideas and track your progress </item>
        <item>Remember that the larger software development project is something to be considered throughout the semester; don't wait until the end! </item>
        <item>Raise concerns early; if an assignment or milestone doesn't seem feasible, say so as soon as you can </item>
        <item>"Work hard, learn lots, stay excited, and have fun." --Ray Ontko</item>
      </list>
    </section>
  </content>
</document>
