CSE 42 Programming with Software Libraries (2014-2015)

CSE 42 Programming with Software Libraries

(Required for CSE.)
Catalog Data:

CSE 42 Programming with Software Libraries (Credit Units: 4) Construction of programs for problems and computing environments more varied than in ICS 31. Using library modules for applications such as graphics, sound, GUI, database, web, and network programming. Language features beyond those in ICS 31 are introduced as needed. Prerequisite: ICS 31 or CSE41 with a grade of C or better. Same as I&C SCI 32. Only one course from CSE 42, I&C SCI 32, I&C SCI 22, CSE 22, I&C SCI H22, IN4MATX 42 may be taken for credit. (Design units: 0)

Required Textbook:
. Edition, , 1969, ISBN-13 978-0470618462.

Recommended Textbook:
Alexander W. Thornton
Relationship to Student Outcomes
No student outcomes specified.
Course Learning Outcomes. Students will:

1. Describe how to employ the components of an API to model aspects of the real world.

2. Identify which parts of an existing software library (API) can contribute to a problem's solution.

3. Assemble parts provided by an API into an effective program.

4. Demonstrate proficiency in implementing programs that draw an APIs of increasing size and complexity for a variety of problem domains.

5. Build simple components using classes.

Prerequisites by Topic
  • Ability to write simple programs in Python.
Lecture Topics:
  • What are software libraries, the value of abstraction, designing and writing larger programs
  • Files, exceptions and exception handling, try statements, try, except, else and finally clauses
  • Higher-level file access, file systems and related modules in Python's standard library, recursive data structures, file systems as a recursive data structure, recursive functions, when is recursion appropriate in Python
  • Computer networks, network input and output, background on how the internet works, sockets, a socket's input and output streams, servers and clients
  • Bytes vs. Strings, using "psuedo-file" objects
  • Modules and the import statement, namespaces and name resolution, writing Python programs, network protocols, implementing a simple protocol in Python
  • Splitting complex functions into shorter, simpler ones, namedtuples
  • Classes, objects and their attributes, constructors, initialization, methods, self parameter, difference between method calls and functional calls
  • The web URLs, HTTP, GET requests
  • Mechanics of prices, indicators, and signal strategies, parallel lists, duck typing, interfaces, designing multiple similar classes
  • Releasing resources when expectations are raised using try/finally, automating release of resources using the with statement, context managers, making a class into a context manager
  • Graphical user interfaces, the tkinter module, event-based programming, widgets, buttons, commands, events and binding in tkinter
  • The Canvas widget, two dimensional graphics and coordinate systems, hexadecimal numbers and using them to specify RGB colors, widgets, masters, layout, using the Grid layout, classes, object-oriented programming, bound methods in Python
Class Schedule:

Meets for 3 hours of lecture, 1 hour of discussion and 6 hours of laboratory each week for 10 weeks.

Computer Usage:
Laboratory Projects:
  • Project #1: Begin the Begin
  • Project #2: Send Me On My Way
  • Project #3: Outside the Wall
  • Project #4: The Width of a Circle (Part 1)
  • Project #5: The Width of a Circle (Part 2)
Professional Component
Design Content Description
Laboratory Portion:
Grading Criteria:
  • Programming projects: 40%
  • Midterm: 25%
  • Final Exam: 35%
  • Total: 100%
Estimated ABET Category Content:

Mathematics and Basic Science: 0.0 credit units

Computing: 4.0 credit units

Engineering Topics: 4.0 credit units

Engineering Science: 4.0 credit units

Engineering Design: 0.0 credit units

April 15, 2014
Senate Approved:
May 7, 2013
Approved Effective:
2013 Winter Qtr