From BU Computer Science
Revision as of 15:59, 15 December 2020 by Pete.DeBonte (talk | contribs) (Schedule: Yet more unused ideas added to the Part-Ⅱ list (rediscovered these this morning in August e-mail draft to myself))
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

CSC 310: Advanced CS topics: 3 hours


Advanced cutting edge CS topics such as cloud computing, machine learning, big data, Internet of things, or mobile computing will be covered. Can be taken up to 4 times as long as the content is different. 3 lectures a week. Prerequisite: Permission of the instructor.

Goals for CSC 310 are:

To be determined

Course outcomes for CSC 310 are:

Upon completion of CSC 310, students will understand:

  • a specific advanced topic in computing and the ethical and security issues associated with it

Program outcomes for CSC 310 are:

  1. Analyze a complex computing problem and to apply principles of computing and other relevant disciplines to identify solutions.
  2. Communicate effectively in a variety of professional contexts.
  3. Learn new areas of technology


  1. Self-learning at the application level by requiring students to learn one component of the topic on their own (with little assistance from the instructor)
  2. Note taking at that master level by
    • not posting lecture slides,
    • requiring students to track all requirements themselves
    • having exam questions based on specifics in the lectures and presentations given by other students.
    • Technical writing at the mastery level by requiring to write a technical report of a project for the class in a quality manner. Advanced discussion on things such as a theme, transitions, use of diagrams, focus, and other items should be covered in class and graded on.
  3. Security at an application level by covering at least two separate security issues associated with the topic of the course.
  4. Ethics at an application level by covering at least two separate ethical issues associated with the topic of the course.
  5. Verbal communications at the application level by requiring students to present their projects and/or supplementary material to the class.

Details for Fall 2020

  • Topic: Internet of Things
  • Professor: Pete De Bonte
  • Office TBD
  • Class Time: 12:30-13:50 TR
  • Class Location: SB 025
  • Textbook: None

Description for Fall 2020

This course will introduce embedded application development, and the course topic will ultimately guide us toward a few particular facets of embedded systems:

  1. Networking
  2. Telecontrol
  3. Telemetry [not actually covered, as the students limited programming experience hindered their project pace.]
With the understanding that Java is the enrolled students' preferred programming language, an applications-grade processor has been selected to support a JVM.
Desiring to provide students with reusable experiences, a Single-Board Computer (SBC) from the Raspberry Pi series has been selected, as they are likely the most popular SBCs at this time.

Course Goals

  • Gain a working knowledge of common microcontroller peripherals
  • Greater exposure to industry best-practice / Application Lifecycle Management

Course Content


Acceptable Work

  • Integrity
  • If any 3rd-party code is used in a project, its permission/license shall be documented in a LICENCE[.md] file.
    • Code lacking an explicit license and/or written permission statement shall not be used.
    • Additional documentation shall be submitted with any project for:
      1. Attribution requirements: a plan for compliance, considering limitations of the embedded system
      2. Multiple FOSS licenses: an explanation of their compatibility


Details in any particular CANVAS Assignment will take precedence; however, the following are typical:

  • Projects shall be submitted via GitHub.
  • Work is typically
    1. Due before class on the date stated in the assignment.
    2. Late, yet still acceptable for half credit, up to the following class session.
  • As each project segment will typically build on the next, they must be completed, even for zero credit, before starting the next segment. That is particularly important for class projects, in which tardiness would affect your classmates.


See the CANVAS Assignments page for this course

(In general, any incomplete classwork should be completed before the next class, to avoid holding back your classmates)


  1. First half of the course
    • more conceptual, so grades were dominated by quizzes;
    • however, I did give some credit for completing classwork (e.g. Raspberry Pi and GitHub setup).
  2. Second half, as the project work has commenced, I expect to instead focus grading on project completion and quality.


Tuesday Thursday
8/18: Overview of Embedded Systems 8/20: Version Control/Git
8/25: ESD, Loading Raspbian 8/27: jGRASP/Java on a Pi
9/1: First quiz, Ohm's law, LEDs, Multimeters, GPIO 9/3: Quiz #2, Review quizzes, Diode measurements, ssh-keygen for Git
9/8: Quiz #3 (#1 Redux), push to Git 9/10: Pi4J v2.52 (the hidden Raspberry Pi 4 update) installed & verified
9/15: Pi Traffic Light class #1: Hardware Verification, GitHub Repo, Initial Design Discussion 9/17: Pi Traffic Light class #2: Introduction to TDD/Unit Testing
9/22: Pi Traffic Light class #3:
  • Refine API
  • Clarify TDD
9/24: Pi Traffic Light class #4: Discuss Unit Test Brainstorming Results
9/29: Pi Traffic Light class #5:
  • Update JUnit
  • Study Java interfaces
10/1: Pi Traffic Light class #6: Extending an abstract class for instantiation
(10/5: Midterm grades due before midnight)
10/6: Pi Traffic Light class #7:
  • Coding JUnit Tests
  • Git Forks
10/8: Pi Traffic Light class #8:
  • Q&A for JUnit and Git
  • Driver Project Overview
10/13: Pi Traffic Light class #9:
  • Updating Forks
  • Timer Options with Pi4J
10/15: Pi Traffic Light class #10: GPI and Interrupts
10/20: Networking class #1: Device Firmware Upgrade (DFU) 10/22: Networking class #2: Internet Protocol
10/27: Install and Configure Checkstyle for jGRASP 10/29: Networking class #3: Java Sockets and OutputStream
11/3: Networking class #4: Java Sockets and InputStream, with HTTP 11/5: Networking class #5: Using a Packet Analyzer (Wireshark) for HTTP & ICMP
11/10: Networking class #6:
  • Suggest HTTP as our class network protocol, as context for studying CoAP in the future.
  • Discuss my Telecommand API proposal and 2nd GPI trigger requirement
  • Q&A for project programming assignments
11/12: Project programming help session
11/17: Project programming help session 11/19:
  • Project programming help session
  • Project presentations (demonstrate functionality)
Final Exam 11/21: 15:30-17:00 (CAVEAT: Not a class day!) 11/26: Thanksgiving Break
Topics for a Part-Ⅱ course?
  • UDP broadcast and multicast
  • Security audit, if we have any cybersecurity majors in the class
  • Watchdog Timer
  • Serial Busses (I²C and SPI)
  • Analog class #1: ADCs (Telemetry/Sensors)
  • Analog class #2: DAC (sound via javax.sound.sampled?)
  • CoAP, branching from our previous HTTP study
  • Publishing/Database server (e.g. SonSet Link, OMA Lightwight M2M/CoAP)
  • Device Management
  • Bluetooth?
  • RFID?
  • Relays and/or FETs?
  • Motors can also be inputs (generator or poll counting)
  • Graphing results on a PC?
  • Project Automatic Meter Reading (AMR): strategies in use, include
    • Handheld (aka "walk-by" meter reading)
    • Satellite ⇒ needn't make "periodic trips to each physical location"
  • Marketing? Name your system, and/or maybe class vote on ideas for the class network?
  • ADC Project
    • make a software VOM or even a scope
    • Vote on the best
    • Then have the class collaborate on improvements (comply with the original student's license: e.g. attribution if requested)


ADA Statement for Syllabi: The Americans with Disabilities Act (ADA) is a law which provides civil rights protection for people with disabilities. Bethel University, in compliance with equal access laws, requests that students with disabilities seeking to acquire accommodations make an appointment with the Center for Academic Success—Disability Services. It is located in the Miller-Moore Academic Center, 033. You may also phone 574-807-7460 or email for an appointment.

COVID-19 Adjustments

  • SEATING – After choosing your seat for this class, please consistently sit in the same seat all semester.
  • FACECOVERINGS - All students must wear face coverings in all classes. You have been provided face coverings for this purpose. If you forget your face covering, and can’t retrieve it and be back in the classroom quickly, you will need to find a private space to synchronously livestream this class or be counted absent.
  • LIVESTREAMING - This class is being livestreamed and stored in Canvas for watching only by a student enrolled in this class. The purpose of the livestreaming/recorded lecture is to accommodate a student who is being quarantined or isolated due to COVID-19. Abusing this feature by letting other students not enrolled in this class view the recording or privately videotaping the recording will be considered a violation of the Campus Lifestyle Covenant. However, when you are ill or participating in a campus sponsored event (like a sport team) you are encouraged to view the recording at a later time.