CSE3010: Computer Science 3
Students explore hardware, software and associated processes at an advanced level. They extend their understanding of software development by moving from procedural programming approaches to an object-oriented approach. In the process they learn how object-oriented programming (OOP) can improve the efficiency and robustness of algorithm development and program construction. They deepen their understanding of the hardware side of computer science by exploring the connection between the binary/hexadecimal number systems and some of the simple logic gates that are the basis of the von Neumann computer. They also add to their understanding of the social implications of computer science by examining the emerging information society.
- Create a slideshow of five important people in the history of computer science. Some possibilities include:
- [“Paul Allen”, “Steve Wozniak”, “Grace Hopper”, “Charles Babbage”, “Ada Lovelace”, “John Von Neumann”, “Alan Turing”, “Ed Roberts”, “John Draper”, “Tim Berners Lee”, “Mark Zuckerberg”, “Angelo Sotira”,”Naveen Selvadurai”,”Drew Houston”, “Ben Silbermann and Evan Sharp”,”Larry Page”, “Sergey Brin”, “Perry Chen”, “Edward Snowden”]
- For each person include:
- name and picture
- birth and death dates
- a few sentences describing their contribution(s)
- a score out of five of how important you think their contributions were
- consider the technological, social, political, and economic impacts
- a description of why you awarded that score
- Add a slide describing how the shift to the Information Age was as important as the Industrial Revolution.
- Create a slideshow, essay, or other artifact about object-oriented programming, including:
- compare and contrast procedural programming and OOP approaches highlighting the:
- approach to modularity
- protection and hiding of data
- use of interfaces to maintain implementation independence
- approaches to organizing algorithms and programs
- respective focus of OOP and structured programming
* describe key aspects of object-oriented design and OOP including:
- abstraction, encapsulation, inheritance, and polymorphism
- classes, class libraries, objects, and instantiation
- data members (properties) and member functions (behaviours)
- public and private access modifiers
- message passing and object networks
* define each of the following as they relate to OOP:
- requirement analysis (including case analysis, domain analysis, and object diagrams)
- class-responsibility-collaboration cards
- iterative prototyping
- dependency, association, aggregation, and composition
- Explain and demonstrate the relationship between binary and hexadecimal number systems, data encoding, logic gates, and the digital computer:
- Describe and represent the binary and hexadecimal system by comparing and contrasting each system with the decimal system, converting numbers from one system to another, and describing and demonstrating the role each system plays in encoding data for digital computing.
- Describe and represent binary arithmetic by creating a simple binary addition truth table, creating simple binary truth tables for basic logical states such as logical conjunction (AND), logical disjunction (OR) and logical negation (NOT).
- Describe and represent circuits (general and logic) using binary notation including AND, OR, NOT, NAND, and NOR.
- Describe and represent simple operations with logic gates including binary addition with full and half adders, binary subtraction with full and half subtractors, tasks involving selection, and tasks involving inversion.