CR: New course descriptions and rationale

From Soma-notes
Jump to navigation Jump to search

COMP 1405

Old Course Description

COMP 1405 [0.5 credit] Introduction to Object-Oriented Programming

A first course in problem solving and computer programming designed for B.C.S. students. Introduction to object-oriented programming; syntactic constructs, data abstraction, classification and inheritance, typing and polymorphism, testing and debugging.

New Course Description

COMP 1405 [0.5 credit] Introduction to Programming I

A first course in programming for B.C.S. students, emphasizing problem solving and computational thinking. Topics include an introduction to computer science, pseudocode, variables, conditionals, iteration, arrays, objects, functions, sorting, searching, and simulation.

Rationale

  • COMP 1405 has high DFW rate and students who pass do not necessarily know how to solve problems using a programming language. Existing course material is oriented towards the specifics of Java.
  • This new course description allow flexibility in our first course to use languages other than Java.
    • Java has lots of syntax to teach, takes away time from teaching general programming and problem solving.
    • Many other universities (MIT, UofT, Waterloo) have moved towards problem solving-focused courses using syntactically simpler languages than Java (Python, Scheme).
    • Java forces the use of object oriented programming when such techniques are not useful for very small programming problems. Students will see the object view of data; inheritance & methods are covered in 1406.
    • The first run of the new 1405 will use Processing, http://www.processing.org.
  • Course should teach basics of imperative programming that are common across programming languages.
  • One potential structure will use weekly assignments with multiple small problems that will require students to solve problems systematically.

COMP 1406

Old Course Description

COMP 1406 [0.5 credit] Design and Implementation of Computer Applications

A continuation of COMP 1405 focusing on the design and implementation of complete applications. Topics covered include persistence, graphical user interface design and implementation, event-driven programming, recursion, drawing and manipulating 2D graphics and networking.

New Course Description

COMP 1406 [0.5 credit] Introduction to Programming II

A second course in programming for BCS students, emphasizing problem solving and computational thinking in an object-oriented language. Topics include abstraction, mutable data structures, methods, inheritance, polymorphism, recursion, program efficiency, testing and debugging.

Rationale

  • Before 1406 had no clear rationale other than giving students additional programming experience.
  • The new 1406 will instead have a mandate of teaching OO principles and Java. Students should be up to speed with basic Java programming by the end of the course.

COMP 1805

Old Course Description

New Course Description

  • COMP 1805 (Mathematical Reasoning for Computer Science): Practice in mathematical arguments sufficient to prepare students for 2402. Cover logic, basic complexity, proof techniques including induction. Other material should be used to illustrate these key concepts.
  • Calc 1
  • Algebra 1

Rationale

Topics for somewhere

  • counting
  • basic probability
  • recurrence relations
  • number representations (floating point, numerical stability)
  • graphs
  • proof techniques (1805, 2805, & 3804)
  • partial orders
  • equivalence relations
  • randomized algorithms
  • modular arithmetic


  • COMP 2003 (Architecture)
  • COMP 2401 (Systems Programming/C & UNIX)
  • COMP 2402 (Data Structures in Java): Be able to analyze simple algorithms over simple data structures. n^2 versus nlogn, for example. Should be able to analyze sorting algorithms, but need not learning sorting.
  • COMP 2404 (Intro to Software Engineering with C++)
  • COMP 2805 (Finite Automata)
  • Prob. & Stats
  • COMP 3000 (Operating Systems)
  • COMP 3004 (Software Engineering)
  • COMP 3005 (Databases)
  • COMP 3007 (Programming Paradigms)
  • COMP 3804 (Design and Analysis of Algorithms)