Active Outline

General Information


Course ID (CB01A and CB01B)
CISD041B
Course Title (CB02)
Advanced Python Programming
Course Credit Status
Credit - Degree Applicable
Effective Term
Fall 2021
Course Description
This course continues from CIS 41A, Python Programming, by covering some topics in more detail and adding more advanced topics. Object-oriented programming, data structures, and functions as first-class objects are covered extensively. New topics include data analysis, data visualization, graphical user interface programming, web access, database access, multithreading and multiprocessing, network socket programming, operating system calls, timing and profiling, and Python extensions.
Faculty Requirements
Course Family
Not Applicable

Course Justification


This course meets the transfer requirement for UC and CSU. It is part of the Programming in Python Certificate of Achievement. Building on student proficiency gained in the CIS 41A course, the CIS 41B course covers advanced topics and skills in Python, one of the most popular programming languages in the high-tech industry.

Foothill Equivalency


Does the course have a Foothill equivalent?
No
Foothill Course ID

Course Philosophy


Formerly Statement


Course Development Options


Basic Skill Status (CB08)
Course is not a basic skills course.
Grade Options
  • Letter Grade
  • Pass/No Pass
Repeat Limit
0

Transferability & Gen. Ed. Options


Transferability
Transferable to both UC and CSU
°®¶¹´«Ã½ GEArea(s)StatusDetails
2G4MDA and 4-yr GE Math AgApproved

Units and Hours


Summary

Minimum Credit Units
4.5
Maximum Credit Units
4.5

Weekly Student Hours

TypeIn ClassOut of Class
Lecture Hours4.08.0
Laboratory Hours1.50.0

Course Student Hours

Course Duration (Weeks)
12.0
Hours per unit divisor
36.0
Course In-Class (Contact) Hours
Lecture
48.0
Laboratory
18.0
Total
66.0
Course Out-of-Class Hours
Lecture
96.0
Laboratory
0.0
NA
0.0
Total
96.0

Prerequisite(s)


CIS D041A

Corequisite(s)


Advisory(ies)


Limitation(s) on Enrollment


Entrance Skill(s)


General Course Statement(s)


Methods of Instruction


Lecture and visual aids

Discussion of assigned reading

Discussion and problem solving performed in class

Quiz and examination review performed in class

Homework and extended projects

Collaborative learning and small group exercises

Collaborative projects

Laboratory discussion sessions and quizzes that evaluate the proceedings weekly laboratory exercises

In-class exploration of Internet sites

Assignments


  1. Required reading from the textbook and class notes
  2. Programs: 5-8 programming projects, several with 200 or more lines of code and using multiple user-defined modules.

Methods of Evaluation


  1. Evaluation of programming assignments for correctness, use of structured design principles, documentation and efficiency.
  2. In-class lab problems, group collaboration problems, quiz questions and/or online tutorials requiring the ability to read and analyze code through debugging and writing snippets of code.
  3. One or more midterm examinations requiring programming ability to develop an algorithm, evaluate code segments, and write code using specific programming constructs presented in the course.
  4. A final examination requiring some programming ability to develop an algorithm, evaluate code segments, and write code using specific programming topics presented in the course.

Essential Student Materials/Essential College Facilities


Essential Student Materials: 
  • None.
Essential College Facilities:
  • Lab with computers that have the Python interpreter, IDE (Integrated Development Environment), and Anaconda distribution installed

Examples of Primary Texts and References


AuthorTitlePublisherDate/EditionISBN
Lutz, Mark: Learning Python, 5th edition. O'Reilly Media. ISBN: 978-1-4493-5573-9. 2013
python.org online documentation: https://docs.python.org/3/

Examples of Supporting Texts and References


AuthorTitlePublisher
Lubanovic, Bill: Introducing Python, 2nd Edition. O'Reilly. ISBN: 978-1492051367. 2019

Learning Outcomes and Objectives


Course Objectives

  • Investigate modules, packages and processing sequences
  • Investigate functions as first class objects
  • Apply calls to OS services
  • Design GUI classes
  • Analyze and visualize data
  • Develop code for web access
  • Construct database access
  • Design multithreading code
  • Design multiprocessing code
  • Write network socket code
  • Utilize programmer tools

CSLOs

  • Design, code, document, analyze, debug, and test advanced level Python programs that include Python modules for database, networking, graphics, and extensions.

Outline


  1. Investigate modules, packages, and processing sequences
    1. Modules and packages
      1. Namespace, naming convention, naming resolution
      2. Create packages
    2. Processing sequences
      1. Iterator class
      2. Generator expression
      3. Generator function
      4. The packing operator
      5. The unpacking operator
  2. Investigate functions as first-class objects
    1. Function reference
    2. map, reduce, filter
    3. Closures
    4. Decorators
    5. Lambda functions
  3. Apply calls to OS services
    1. The os module
    2. Environment variables
    3. Launching OS commands
    4. Working with file systems
      1. The os.path module
      2. The shutil module
      3. The sys module
        1. Command-line arguments
    5. Date and time
  4. Design GUI classes
    1. GUI layout: concept of master
    2. Widgets and window layout
    3. Colors, fonts, text, and window resizing
    4. Event handling
    5. Callback and bind methods
    6. Derive window classes from a GUI package
    7. Coordinating windows in a GUI: update, wait, focus, grab, destroy
  5. Analyze and visualize data
    1. numpy array
      1. Initializing and indexing
      2. Arithmetic and logical operations
      3. Common math and statistics computation
    2. Plotting
      1. Line graph, bar graph, histogram
      2. Embed plots in a GUI front end
  6. Develop code for web access
    1. The urllib module and the requests package
    2. Parsing HTML data
    3. Web scraping and web crawling
    4. Ethics of web scraping
    5. The web API
      1. JSON format
  7. Construct database access
    1. The DB API and available interfaces
    2. Connecting to the SQLite3 DB
    3. Parameterized statements
    4. Metadata
      1. Tables
      2. Columns
      3. Constraints
      4. Foreign keys
    5. DB Transactions
  8. Design multithreading code
    1. Python threads and the GIL
    2. The threading module
    3. Parent thread, child thread, daemon thread
    4. Thread communication
      1. Event
      2. Lock, semaphore, and race conditions
      3. Queue
    5. The thread manager
    6. GUI and multithreading
  9. Design multiprocessing code
    1. Process definition
    2. The multiprocessing module
    3. Process communication
      1. Event
      2. Lock
      3. Queue
    4. Process pool
      1. map
      2. async
  10. Write network socket code
    1. Sockets
    2. Client and server sockets
    3. Socket protocols
    4. Threaded servers
    5. Binary data and the pickle module
  11. Utilize programmer tools
    1. Analyzing and testing programs with unittest
    2. Profiling programs

Lab Topics


  1. Write and debug code that works with multiple modules, generators, and data structures.
  2. Write and debug code that implements first-order and higher-order functions, lambda functions, and decorators.
  3. Write and debug code that calls OS services.
  4. Write and debug code that uses a GUI to interact with the user.
  5. Write and debug code that analyzes data and provides data visualization.
  6. Write and debug code that download, parse, and analyze HTML data.
  7. Write and debug code that stores and access data in an SQL database.
  8. Write and debug multi-threaded code.
  9. Write and debug multiprocessing code.
  10. Write and debug client and server socket programming code.
  11. Write, debug, analyze, and profile code for performance.
Back to Top