Unit Proposal Template (incl. Avatar) UNIT CODE, NAME, ABBREVIATION FIT1008 Computer Science A [Computer Science A] REASONS FOR INTRODUCTION Reasons for Introduction FIT1008 is a core unit in the Bachelor of Computer Science (BCS) and the Bachelor of Software Engineering (BSE). It was introduced as part of the faculty restructure for 2006. Previously these degrees had a core unit CSE1303. FIT1008 is based on the late CSE1303 but has been substantially revised due to changes in the pre-requisite units and other core units in the degrees. Role of Unit FIT1008 is a core unit in the BCS and BSE degrees at Clayton campus. It builds on the introduction to computer programming begun in the faculty core unit FIT1002 Computer Programming, and on the introduction to computer systems begun in the faculty core unit FIT1001. Its most important role is to introduce some major themes from the discipline of computer science, namely, Algorithms and Data Structures, Software Engineering and Abstract Machines. This selection of topics allows students to understand how problem solving in computer science involves different levels of abstraction, from high-level algorithms and programming down to the machine level. It gives the students practice in various aspects of problem solving, including developing, applying and implementing simple algorithms and data structures, and allows them to understand the methodologies required to design, develop and test larger, application-oriented programs. Finally, it uses the Java programming language not only to implement the aforementioned algorithms but also to illustrate more advanced object-oriented (OO) concepts and techniques. Relationship of Unit FIT1008 is a first year core unit in the BCS and BSE. It follows the Faculty common core units FIT1001 Computer Systems and FIT1002 Computer Programming. While some of the OO programming aspects may be similar to FIT1007 Computer Programming 2, its treatment of algorithms and data structures is deeper, and its software engineering and abstract machine topics are not covered in FIT1007. Relevance of Unit BCS and BSE students need a more advanced level of programming than that provided in the faculty core. FIT1008 extends the knowledge and skills gained in FIT1002. More importantly, it introduces some of the fundamental aspects of computer science which are built upon in the later years of the BCS and BSE degrees. OBJECTIVES Knowledge and Understanding (Cognitive Domain Objectives) At the completion of this unit, students will be able to K1. Understand abstract data types and, in particular, data structures for stacks, queues, lists, and trees, as well as their associated algorithms for creating and manipulating them. Choose the most appropriate one for a given problem. Create their own simple data structures. K2. Understand basic searching and sorting algorithms and implement them. Understand the concept of algorithmic complexity. Analyse the complexity of these searching and sorting algorithms as well as other basic algorithms. Compare the complexity of different algorithms for solving a given problem. K3. Analyse different implementations of abstract data types and determine their implications regarding complexity, functionality, and memory usage. K4. Understand the uses of recursive algorithms and data structures, their advantages and disadvantages. Analyse the complexity of simple recursive algorithms, and their relationship with iteration. Understand basic recursive algorithms for lists and trees, and develop new ones. K5. Gain a deeper understanding of basic object-oriented (OO) concepts, and learn more advanced ones such as inheritance, polymorphism, information hiding and encapsulation. K6. Understand the design principles for building an object-oriented program, such as identify classes, and determine how and when to use inheritance. Apply this principles by implementing programs in Java which require the use of not only basic but also advanced object-oriented concepts. K7. Understand the software development life cycle. Analyse the advantages and disadvantages of different life cycle models. K8. Understand the basic concepts in testing, including verification, validation, and reliability models. Analyse different testing approaches such as modular, static, dynamic, and formal. K9. Understand software quality and the software quality assurance process. K10. Understand the relationship between high-level and low-level programming languages. Analyse the advantages and disadvantages of using each one for solving different problems. K11. Understand the concept of Abstract Machine. Learn the structure and design of a particular Abstract Machine simulator. Use it to implement some of the simple iterative algorithms developed before, and thus gain a deeper understanding of the connection between software and hardware, between an algorithm and its execution. K12. Understand the trade-offs regarding simplicity, efficiency and memory usage when designing the architecture of a a computer. K13. Understand how the simulator implements function calling, and use it to reinforce the connection between recursion and iteration. Attitudes, Values and Beliefs (Affective Domain Objectives) At the completion of this unit, students will have attitudes that make them: A1. Conform to programming standards when writing software. A2. Use good design principles when constructing systems. A3. Take a patient and thorough approach to testing. A4. Acknowledge any assistance they have received in writing a program. A5. Search for information in appropriate places when necessary. Practical Skills (Psychomotor Domain Objectives) At the completion of this unit, students will be able to: P1. Design and implement Java programs using a variety of data structures and algorithms. P2. Implement an object-oriented program consisting of many interacting classes. P3. Construct a test harness for testing an object-oriented program. P4. Debug and modify an existing program (written by somebody else). P5. Use the Java API classes as part of their programs. P6. Use the Java collection classes to store and retrieve data appropriately. P7. Use the Abstract Machine simulator for executing simple programs. P8. Analyse the time and space requirements of simple algorithms and data structures. Relationships, Communication and Team Work (Social Domain Objectives) At the completion of this unit, students will be able to: R1. Document a program correctly. R2. Produce appropriate documentation for designing and testing a program. R3. Explain how parts of a program work. UNIT CONTENT Classification PF Summary FIT1008 Computer Science A introduces students to core problem-solving, analytical skills, and methodologies useful for developing flexible, robust, and maintainable software. In doing this it covers a range of conceptual levels, from high level algorithms and data-structures, down to abstract machine models and simple assembly language programming. Topics include data structures; algorithms; object-oriented design and programming; introductory topics from software engineering; and abstract machines. Recommended Reading * Data Structures \& Algorithm Analysis in Java. Mark Allen Weiss. Addison-Wesley. * One for OO * One for SE * One for Architecture. TEACHING METHODS Mode On campus Strategies of teaching Lectures, weekly practicals in computer labs, weekly classroom tutorials, helpdesk, email contact with lecturer and tutors, unit website, internet discussing groups. Lectures will be used to present new concepts, compare different approaches, analyse their advantages and disadvantages, and propose some general questions. The aim is to give students a first look at the concepts and challenge them to think further. Tutorials and practicals will be used to link the theory with practice and deepen the students understanding. Teaching Methods Relationship to Objectives The lectures will present the conceptual and theoretical aspects of the unit addressing all objectives in the cognitive domain. They will also cover the principles that should affect the students attitudes, values and beliefs (in particular, A1, A2 and A3). The tutorials and laboratory classes will enhance the students understanding of the subject matter. Specifically, * the tutorials will use case studies to illustrate the practical usage of theoretical concepts, thus linking the cognitive and practical domains. * the laboratory classes will develop the practical skills, reinforce the objectives of the affective domain, and help develop those of the social domain. ASSESSMENT Strategies of Assessment Examination (3 hours) 60%; Compulsory assessed laboratory classes: 20%; Mid-semester tests: 20% Assessment Relationship to Objectives The final and mid-semester exams will asses all the cognitive objectives, a simple version of practical objectives P1, P2, P3, and P8, as well as the social objective R3. The laboratory classes will asses all practical and affective objectives as well as social objectives R1 and R2. WORKLOADS Credit Points 6 Workload Requirement 12 hours per week: 3 hour lecture, 3 hour laboratory, 1 hour tutorial and 5 hours private study (reading, working on exercises, etc) RESOURCE REQUIREMENTS Lecture Requirements 3 x 1 hour lectures per week for 13 weeks in each semester, in high-tech lecture theatre Tutorial Requirements 1 x 1 hour tutorial per week Laboratory Requirements 1 x 3 hour lab session per week for 13 weeks in each semester, up to 16 students in each lab. Software Requirements: Java. Latest version of BlueJ?. [Requirements for assembly language simulator???] [Old software from CSE1303: it gave a disk which had linux and the entire set-up prepared for the pracs, so that all students could have a unique environment to compile and execute their pracs. Are we going to do the same?] Vendor: FSF Software Title: gcc Version: >= 3.2 OS: Linux First Semester Week required: week 1 of semester Licence Details: Freeware (GPL) Vendor: FSF Software Title: gdb Version: OS: Linux First Semester Week required: week 1 of semester LicenVendor?: http://www.cs.wisc.edu/~larus/spim.html Software Title: xspim Version: >= 7.0 OS: Linux First Semester Week required: week 1 of semester Licence Details: Freeware Staff Requirements (Clayton) 1 EFT lecturer for 13 weeks for each semester. (Malaysia) 0.5 EFT lecturer for 13 weeks for each semester. 1 demonstrator per 16 students for 3 hours per week of class contact for 13 weeks in each semester. 1 tutor per 15 students for 1 hour per week of class contact for 13 weeks in each semester. Library Requirements NA - existing requirements from existing units (CSE1303). [XXX Do we need to complete a library statement?] [From FIT1007] A Library Impact Statement has been completed and sent to the Library. However, there are no additional requirements as most of the unit content is already covered in existing units which are adequately catered for by existing library resources. Teaching Responsibility (Callista Entry) Clayton: CSSE 100%; [Malaysia: SIT@MUM 100%. ???] Implications for CASPA All current agreements and credit assessments for the Bachelor of Computer Science and Bachelor of Software Engineering will need to be revised in light of the new coursemaps. Interfaculty Involvement None Interschool Involvement This document has been circulated to relevant staff for feedback, which has been reviewed and incorporated in the proposal Other Resource Requirements PREREQUISITES Prerequisite Units: FIT1001 Computer Systems or equivalent FIT1002 Computer Programming or equivalent Prerequisite Knowledge Students beginning Computer Science A are assumed to be able to: * Identify the main components of an algorithm (variables, operators, expressions, etc), and write the algorithm associated to the specification of a simple problem. * Use software development tools such as loaders, linkers, compilers, debuggers, editors. In particular, design, implement, compile, debug and execute a Java program containing selection, repetition, simple classes and two dimensional arrays. * Perform decimal to binary and hexadecimal conversions, represent integers, signed fractional, floating point and character data. * Perform basic boolean algebra and digital logic, form logic expressions, build truth tables, and understand logic gates. * Identify the main components of a basic computer architecture and follow the main steps in the fetch-decode-execute cycle. * Recognise the main types of assembler instructions. Implement a simple assembler program for an abstract machine, and execute it using the XXX simulator using in FIT1001. PREREQUISITES FOR (Units supported): FIT2004 Algorithms and Data Structures FIT2008 Net-centric Computing FIT2010 Databases FIT2025 Software Engineering Practice COREQUISITES PROHIBITIONS CSE1303, CSC1030, FIT2007 (?) RELATED ELECTIVES ALIAS TITLES LEVEL Undergraduate Level 1 RESEARCH INTEREST This unit has no research component DATE OF INTRODUCTION Semester 2, 2006 FREQUENCY OF OFFERING Semesters 1 and 2 at Clayton; Semesters 1 and 2 at Malaysia. ENROLMENT Clayton: 200 in Semestesr 2, 80 in Semester 1. LOCATION OF OFFERING Clayton FACULTY INFORMATION Proposer Ann Nicholson Contact Person Ann Nicholson Unit Coordinator Approvals Version History