Course Syllabus

Home | Syllabus | Schedule | Projects | Resources | TA Infos | Project 1 | Project 2

Course Description

EECS 22L Software Engineering Project in C Language (3)
Hands-on experience with the ANSI-C programming language. Medium-sized programming projects, teamwork. Software specification, documentation, implementation, testing. Definition of data structures and application programming interface. Creation of program modules, linking with external libraries. Rule-based compilation, version control.
Prerequisites: EECS 22.
(Design units: 3)

Course Objectives and Student Outcomes

This course relates to Program Outcomes: EAC-1, EAC-2, EAC-3, EAC-4, EAC-5, EAC-6.

  • Student Outcomes:

    • Be able to specify and document a software program for a contemporary application (EAC-1, EAC-2, EAC-3, EAC-4)
    • Be able to design and implement dynamic data structures using user-defined data types (EAC-1)
    • Be able to implement, test, and debug a software program (EAC-6)
    • Be able to utilize software engineering tools such as version control and scripting (EAC-6)
    • Be able to write original source code to solve an engineering problem (EAC-1, EAC-2, EAC-4)
    • Be able to collaborate and communicate effectively in a team (EAC-5)

Course Resources

  • Course web site
    online at
  • Reference book:
    B. W. Kernighan, D. M. Ritchie:
    The C Programming Language,
    Second Edition,
    Prentice Hall, 1988.
    ISBN 0-13-110362-8
  • Supplemental text book:
    Paul Deitel, Harvey Deitel:
    C: How to Program,
    Eighth Edition,
    Pearson, 2016.
    ISBN-10: 0133976890
    ISBN-13: 978-0-13-397689-2

Course Contents

Week Lecture topics Project tasks
1 Introduction to software engineering Project 1 Application specification
2 Software architecture, design flow, documentation Software architecture specification
3 Introduction to version control, GUI programming Documentation, implementation
4 Software development, testing, documentation Implementation, testing, debugging
5 Software packaging, installation, deployment Delivery, installation, deployment
6 Project planning, organization, maintenance Project 2 Application specification
7 Data structure and API design Software architecture specification
8 System programming, shell scripting, Linux tools Documentation, implementation
9 Outlook to object-oriented programming in C++ Implementation, testing, debugging
10 Course wrap up Delivery, installation, deployment
  • Note that contents are tentative and may change.
  • Please see the Schedule page for up-to-date scheduling information.

Course Policies

  • Attendance Policy:

    The class meets for 1 hour of lecture, 1 hour of discussion, and 3 hours of laboratory (on average each week) for 10 weeks. Attendance at lecture, discussion, and laboratory sections is mandatory (sign-in sheets). It is each student's responsibility to make up for any missed instruction and any project contributions to the team. Make-up projects and/or exams will only be arranged for absence due to medical (or similar) reasons. Proper documentation is required.
  • Laboratory Policy:

    Discussions and labs assigned to this course are listed in the Schedule of Classes (see course codes 16411-16427). Lab work is performed remotely from a laptop over a network connection to departmental servers. Students may remote login to the server at any time (24/7), but live instructor support is available only during the assigned lab hours.
  • Computing Servers:
    Linux is the standard programming platform used for this course. All processes run on the EECS Linux servers,,, or While other platforms may be used to develop and test the programs, all course work will be checked and graded on these servers.
    A command-line terminal with SSH is required to login to these servers. Please refer to the Resources page for a list of suitable SSH clients.
  • Projects:

    Course projects are listed on the Projects page. Projects will be assigned to student teams (see below) and include weekly deliverables.
    Deliverables are generally due on Monday at 10am, unless indicated otherwise on the project web page.
    The deadline for deliverable submission is hard. Deliverables turned in after the due date/time will not be graded and will receive no credit. The clock on the server will be used as the reference clock.
    All deliverables are to be submitted electronically by a designated team member while being logged into the team account on the server. Detailed submission instructions will be provided with each project description
  • Teams:

    The programming projects in this course will be performed by student teams. Depending on course enrollment, teams of 4 to 6 students will be formed at the beginning of each project. Team work is an essential aspect of this class and every student needs to contribute to the team effort. While tasks may be assigned in a team to individual members, all members eventually share the responsibility for project deliverables. A team account will be provided on the server for each team to share data among the team members. Since teams will compete in the projects, sharing of data across teams is not permitted.
  • Exams:

    The course includes one midterm and one final examination, scheduled as listed on the Schedule page.
    Exams will be short oral presentations of individual students at the computer terminal. Students need to explain their original contribution to the team, their original deliverable (source code and/or documentation), and answer questions. The individual contribution may be additionally assessed by TA feedback and/or peer review. The course instructor will assign an individual score for the exams after all exams are completed. An official photo ID is required for inspection.
    Final examinations are administered during examination week at the time and place announced on the course schedule page
  • Grading Policy:

    The final grade for the course will be calculated as a weighted sum of the points scored in participation, team deliverables, the midterm, and the final examination, as follows:
    • 5% Participation (individual effort)
    • 15% Midterm examination (individual effort)
    • 30% Final examination (individual effort)
    • 50% Programming projects (team effort)
    Extra credit may be earned with with projects as indicated in the project description.
  • Academic Honesty:

    Academic integrity is essential, as published by the Office of Academic Integrity and Student Conduct (AISC): Academic Integrity Information for Students.
    The work you contribute to your team must be your own! Academic dishonesty includes, but is not limited to copying answers from another student, allowing another student to copy your answers, communicating exam answers to other students during an exam, attempting to use notes or other aids during an exam, or tampering with an exam after it has been corrected and then returning it for more credit.
    While the projects will be graded based on team effort, exams are graded individually (see above). Thus, working together in the team is necessary (!) for the projects, but not allowed during the examinations.
    Do not copy code across teams!
  • Course Material:

    All course material is for use in the context of this course only. Selling, preparing, or distributing for any commercial purpose course lecture notes or video or audio recordings of any course unless authorized by the University in advance and explicitly permitted by the course instructor in writing. The unauthorized sale or commercial distribution of course notes or recordings by a student is a violation of these Policies whether or not it was the student or someone else who prepared the notes or recordings.

Course Summary:

Date Details Due