Schedule
Week | Topics |
---|---|
01/22 |
Syllabus, introduction, loading software |
Programming Language: C# |
|
01/27 |
Imperative programming, syntax, standard library |
02/03 |
Objects, polymorphism, inheritance |
02/10 |
Parallelism, task async pattern (TAP) |
02/17 |
File streams, F: C# exam |
Programming Language: Haskell |
|
02/24 |
Declarative, functional programming, IO, monads, syntax |
03/03 |
Text files, recursion, tail recursion, Maybe |
03/10 |
Objects, polymorphism |
03/17 |
SPRING BREAK |
03/24 |
Byte strings, F: Haskell Exam |
Programming Language: Rust |
|
03/31 |
Blended programming |
04/07 |
Syntax, style, data types, references |
04/14 |
Easter Holiday |
04/21 |
Traits, MPSC, iterators |
04/28 |
Threading, concurrency, F: Rust Exam |
05/05 |
Language bindings, FFI |
Catalog Description
3 Credit Hours
Language paradigms (procedural, functional, object-oriented, logic), language design and implementation issues, and language issues related to parallelism.
Prerequisite(s): COSC 302 or COSC 307 with a grade of C or better.
Items or topics not covered in this syllabus are per UT policy or instructor’s discretion. |
Policy
-
Compliance. Compliance of this syllabus is mandatory for all students enrolled in this course.
-
Instructor Discretion. Items or topics not covered in this syllabus are per UT policy or instructor’s discretion.
General Information
-
Purpose. This syllabus describes this course, policies, and procedures.
-
Scope. This syllabus applies to all students enrolled in the course at the Min H. Kao Department of Electrical Engineering and Computer Science (http://www.eecs.utk.edu) of the Tickle College of Engineering (http://tickle.utk.edu) of the University of Tennessee (http://utk.edu).
-
Amendments. Amendments may be made to this syllabus with or without notification; therefore, do NOT save this syllabus.
-
Retrieval. Retrieve this syllabus from Canvas every time in case it is updated.
-
Syllabus Date. Use the date at the end of this syllabus to determine if you are reading the most up-to-date version.
-
Summary of Changes. A summary of changes is provided on the syllabus.
-
-
Availability. This canvas course will not be available after the last day of the semester.
-
Key Words.
-
"Will", "must", and "shall" indicate a mandatory requirement.
-
"Should" is used to indicate a preferred, but not mandatory, method.
-
"May" indicates an acceptable or suggested means.
-
-
Initialisms.
-
"UTK" is short for the "University of Tennessee in Knoxville".
-
"TBD" and "TBA" is short for "To Be Determined" and "To Be Announced", respectively.
-
"IAW" is short for "In Accordance With".
-
"CANX" is short for "Cancelled".
-
"WX" is short for "Weather".
-
Calendars, Dates, and Times
-
Learning Management System. All students will be required to use Canvas as the learning management system.
-
Calendar. The Canvas calendar will be used to notify students of live sessions, holidays, and other important dates. Students will be required to frequently check their Canvas calendar for due dates and important course dates.
-
-
Times and Dates. All times and dates, including due dates, will use the Eastern Time Zone and will observe spring and fall time changes (EST and EDT).
-
24-Hour Clock. All times will use a 24-hour clock (e.g., 1100 = 11:00am, 1200 = 12:00pm, 1500 = 3:00pm, 2200 = 10:00pm, etc.).
-
Student Confidentiality
-
Student Information. All student information will be kept confidential in accordance with the Family Educational Rights and Privacy Act of 1974 (FERPA). More information may be found at https://ferpa.utk.edu
-
Disclosure. Information will not be disclosed to anyone but the student, including parents, if the student is classified as an adult (e.g., >= 18 years old).
-
FERPA Waiver. Students may waive some or all of their FERPA rights, typically in cases such as letters of recommendations. Students must complete and sign a FERPA waiver form before any FERPA-related information is released.
-
FERPA Waiver Form. Students may access the FERPA waiver form at https://tiny.utk.edu/marz_ferpa
-
Tutoring and Course Assistance Policy
-
Teaching Assistants (TAs). Teaching assistants are representatives of the professors or instructors. They have full access to all course and all student information, including grades.
-
Supplemental Instructors (SI). Supplemental instructors from the student success center are not official representatives of this course.
-
Students will not consider any instruction or suggestion to be official policy from any supplemental instructor.
-
Supplemental instructors must NOT make any deviations per this syllabus.
-
-
Tutoring Services. Tutoring services may be offered to get a student up to the level necessary to succeed in the course. Tutoring services are NOT official representatives of this course.
-
Any conflict of information or policy must be resolved by giving preference to the course, this syllabus, and the instructors of this course.
-
Topics
-
Declarative programming style
-
Functional
-
-
Imperative programming style
-
Object-oriented
-
-
Objects
-
Classes
-
File operations
-
Interfaces
-
Lambda functions
-
Asynchronous/parallelism/concurrency
-
Properties (get/set)
-
Polymorphism
-
Inheritance
-
Generics/templates
-
Collections
-
Lazy evaluation
-
Tail recursion
Prerequisites
Students are assumed to have satisfactory knowledge of the following topics prior to taking this course.
-
Program in C, C++, or Java
-
Students will be graded on writing good comments and formatting code.
-
Students will be graded on some aspects of good coding, such as not repeating code.
-
Students will be graded on writing well-structured code, such as using functions, constants, and not using global variables.
-
Read and write binary files.
-
Understand data types and sizes.
-
Be able to use the Canvas LMS.
-
Be able to use SSH and SCP to work on assignments remotely (on Hydra or Tesla machines).
Student Expectations
-
Preparation. Students must come to class prepared by reviewing the lecture slides, lecture notes, and/or lecture videos.
-
Communication. Students must use the discussion system, Piazza, to ask questions. Do not email the professor or TAs directly. Doing so could slow responses. We use a discussion system so that everyone that can help you can see your messages and the responses. This ensures you get the most accurate and timely information. The discussion system being used and associated links will be on Canvas.
-
Code Dumps. Students will not code dump, which means attach or copy-and-paste entire or large sections of code for the TAs to determine the issue. Instead, students must articulate the issue fully.
-
-
Attendance. Students must attend all classes in-person and submit all assignments.
-
Please do not approach the instructor before or after class.
-
There is a limited amount of time to set up for class before the class period begins.
-
Likewise, there is a limited amount of time to leave the classroom before subsequent classes enter.
-
Students who cannot attend class are still responsible for the material they missed.
-
-
Exams. If a student misses an exam, it will be considered unexcused until the student submits and absence request with the Dean of Students, and it is approved. Unexcused exams will not be eligible to be taken at a later time and will be graded 0. Students must notify the instructor before the exam if he or she will miss an exam during its regularly scheduled time and date.
-
Disability Accommodation. Students who require a disability accommodation for class or for exams must be approved by the Office of Student Disability Services (SDS): https://sds.utk.edu. Without an accommodation, students will not be provided with additional services or additional time on exams.
-
Every exam must be coordinated with SDS. All exams with accommodations must be taken at the SDS testing center due to time limitations in the classroom.
-
Unless previously coordinated and approved, no student may take a test (midterm and final) without a test proctor observing, which may be the professor, TA, or an SDS test proctor.
-
-
Laptop Policy. Students will need a Mac or Windows PC capable of loading the appropriate software. Students may (but are not required to) purchase laptop computers at the UT Volshop for a discount price at: https://www.utvolshop.com/shop-voltech/pcs?page=1.
-
Financial Hardship. Students facing financial hardships may apply for emergency funding through the Dean of Students: https://dos.utk.edu/student-emergency-fund.
-
Workload. Students are expected to spend at least double the number of credit hours outside of class studying, doing homework, or other work for this course every week. For more information, please see https://catalog.utk.edu (Academic Policies and Procedures) for more information.
Assignment Types
Students will be evaluated on several different types of assignments.
-
Weighted percentages. The percentage towards a student’s grade is listed on the Syllabus tab on Canvas.
-
Clickers. In-class clickers will use the Echo360 system. Physical clickers will NOT be supported. Students must either use his or her mobile phone or the online, web-based response system. Students will receive a total of seven 7 lowest score drops for the semester. Grading will be done only in three stages: correct (100%), incorrect (50%), not answered (0%).
-
Practice Labs. Practice labs are small problems that can be solved in an afternoon. The point is to practice the language in different facets. These labs will be auto-graded by Zylabs.
-
Programming Labs. Programming labs are the typical, multi-faceted problem sets you are familiar with if you have taken 102/202/302/360. These are graded by the TAs.
-
Project. You will write a virtual machine using a simple ISA. This virtual machine will represent an intermediate interpreter, much like CLR for C#. The project will be written and submitted as a group of three to four student members. The project will be split into two parts: (1) the assembler and (2) the virtual machine.
-
Exams. Students will be given a short lab that covers the language covered in the preceding lectures, and they are not comprehensive.
-
No Final Exam. There is no final exam for this course. Instead, your project will be due during after final exam period for this course.
Programming Expectations
-
Students will write several programs in varying languages learned in the course.
-
Students are expected to have had at least two semesters of programming. If coming from UTK, Java and C++.
-
Students are expected to have a sufficient background in C++ and/or Java programming.
-
Students will be held responsible for writing clean, efficient code.
-
Students must always write comments to include a commented header with: (1) their name, (2) date, (3) synopsis of what they are writing, (4) any help they received, to include, but is not limited to, from a TA or professor or another student.
-
Students must write comments that effectively document the logic of his or her code.
-
We are not there to inquire about your code, so your comments need to do that for us.
-
-
Code that does not compile or run will be penalized significantly. The TAs have been instructed to only fix very minor errors that prevent compilation, such as a missing semicolon or a stray character. The TAs will not write the solution code for a student.
Grading
-
Canvas Checkbox. Students must ensure that the checkbox is left unchecked when checking his or her grade on Canvas (under Grades). If this checkbox is checked, missed assignments will not be considered, and therefore, the student’s grade may appear higher.

Late Policy
-
Deduction. Some late assignments are accepted with a deduction of 15% of the total points per day.
-
Automatic deduction. Canvas automatically applies the late policy to assignments submitted after the due date.
-
-
Due/Close dates. Students are responsible for checking Canvas for due dates as well as closing dates.
-
Due date. Assignments submitted after the due date are subjected to the late penalty.
-
Closing date. Assignments cannot be submitted after the closing date.
-
The Canvas open/close/due dates are controlling over Zylabs! |
Grading Appeals
-
Eligibility. Students may appeal an assignment grade provided:
-
Timeliness. The appeal is made within 7 days of the grade being revealed.
-
Forum. The student must use the discussion system on Canvas (e.g., Piazza) and submit the appeal to all professors and TAs.
-
Content. Students must document their grievances and why the grade should be changed.
-
Appeals can only be made when an error has been made in grading.
-
Appeals can NOT be used for relief or an exception to policy.
-
Appeals with no or invalid justification will be denied.
-
-
Regrades. An appeal will force a regrade of your work.
-
Your old score will be deleted and NOT be considered when your work is regraded.
-
It is possible to get a lower score after a regrade.
-
Regraded work can not be appealed unless there is an obvious error in the regrade.
-
-
Letter Grades
Letter | Cutoff | Letter | Cutoff | Letter | Cutoff |
---|---|---|---|---|---|
A+ |
N/A |
A |
94 |
A- |
90 |
B+ |
87 |
B |
84 |
B- |
80 |
C+ |
77 |
C |
74 |
C- |
70 |
D+ |
67 |
D |
64 |
D- |
61 |
These are hard cutoffs. Grades are not rounded or curved. |
Tips to Succeed
-
Stay within your means. Do not take more courses/credit hours than you can handle. Take stock in your personal life, events, and workload.
-
Try different forms of instruction. If you cannot learn from the textbook, try the lecture notes, or lecture. There are several forms that present the material. It may seem repetitive to you, but it is to offer you different avenues to learning the material.
-
Review and update your lecture notes. Your notes should be an evolving process. You need to write them over in your own words after you understand them. Just like learning anything else, repetition is important to the learning process!
-
Get help early. The instructors and TAs will hold regular office hours. The time goes by much easier when we have students to talk to. Even if you do not have specific questions, come over to office hours and introduce yourself. You will see where we are coming from and we can see where you are coming from.
-
Start early. For most (I would dare say all) cases, if you are late submitting an assignment, it will either suffer a penalty or not be accepted at all. This is the item where most students who struggle can get ahead. You reduce access to the TAs and instructors when you wait until the last minute to start your assignments.
-
Do NOT cheat. No matter how many office hour sessions, discussion boards, and so forth that we make, we still get students who think they need to go to stackoverflow or Chegg and download “their” solution. Nothing will kill your grade faster than cheating. We have sophisticated tools that help us find and prosecute cheating. Cheating will result in your permanent student record being flagged!
-
Try outside help. The Student Success Center has tutoring and supplemental instruction. Their schedule changes every semester (and even sometimes during a semester). Here at EECS, the Systers group might be able to offer you help.
-
Know what is required. I have seen several students earn a terrible score due to either not reading the assignment or not asking for clarification if a question arises. This essentially means the student is doing a different assignment. You will not be graded on what assignment you do, but instead, the assignment that is given to you.
-
Do not ignore the hints. In many cases, this course provides a narrative and hints/tips. Students must read and understand all different forms. If anything seemingly contradicts, a student should ask for clarification.
Code of Conduct
-
Applicability. Students at the University of Tennessee are members of both the University community and the larger community of which the University is a part. Accordingly, students are responsible for conducting themselves in a lawful manner as well as in compliance with University rules and policies.
-
Summary. This section of the syllabus is only a summary. Students are still responsible for following all applicable rules in the student code of conduct.
-
Reference. https://studentconduct.utk.edu/standards-of-conduct-overview/
Cheating and Plagiarism
-
Reasonable Suspicion. Students who are suspected of cheating will be contacted about the allegation.
-
Initial Penalty. Students suspected of cheating will receive the negative maximum value on the assignment.
-
Example. If a lab is worth 5 points, students who cheat will receive a -5. If the student is eligible for redoing the assignment, the grade of the student’s redone lab will be added to the -5. If a student earns 3 points, that will be added to the original, negative score. For example, \$3 + -5 = -2\$. The maximum score a student may receive is 0.
-
-
Repeated Violations. Students suspected of cheating on more than one assignment will receive an F for the course.
-
Investigation. The instructor and/or TAs are not investigation units. If there is contention about a cheating case, it will be investigated by the Office of Student Conduct and Community Standards (SCCS): https://studentconduct.utk.edu.
-
SCCS will determine the outcome and sentence. Any communications must be in writing for both informal and formal portions of the standards review process. Students may be submitted to SCCS before receiving an informal response if the evidence is overwhelming or if the semester is close to ending, such as with a final exam.
-
-
Final Grade Not Reporting. The SCCS policy is to not assign a final grade until a determination has been made. If a student is alleged to have cheated and final grades are assigned before the matter has been resolved, a student will receive an NR (not reported) grade. This precludes students from taking any of the follow-on courses or from retaking this course.
Examples of Cheating
-
Definitions. Plagiarism and cheating may result from a student copying an assignment or sections of an assignment from another student, from an online source, or from the student’s own previous assignment (from a previous attempt at the course). Students may not use a tool to produce their lab submission, including but not limited to external sources, a disassembler, or a compiler.
-
Plagiarism. Plagiarism is using the intellectual property or product of someone else without giving proper credit. The undocumented use of someone else’s words or ideas in any medium of communication (unless such information is recognized as common knowledge) is a serious offense, subject to disciplinary action that may include failure in a course and/or dismissal from the University. Specific examples of plagiarism include, but are not limited to:
-
Using without proper documentation (quotation marks and citation) written or spoken words, phrases, or sentences from any source.
-
Summarizing without proper documentation (usually a citation) ideas from another source (unless such information is recognized as common knowledge).
-
Borrowing facts, statistics, graphs, pictorial representations, or phrases without acknowledging the source (unless such information is recognized as common knowledge).
-
Collaborating on a graded assignment without the instructor’s approval.
-
Collaborating on a graded assignment without citing all collaborators.
-
Submitting work, either in whole or partially created by a professional service or used without attribution (e.g., paper, speech, bibliography, or photograph).
-
-
Academic Dishonesty. Specific examples of other types of academic dishonesty include, but are not limited to:
-
Providing or receiving unauthorized information during an examination or academic assignment, or the possession and/or use of unauthorized materials during an examination or academic assignment.
-
Providing or receiving unauthorized assistance in connection with laboratory work, field work, scholarship, or another academic assignment.
-
Falsifying, fabricating, or misrepresenting data, laboratory results, research results, citations, or other information in connection with an academic assignment.
-
Serving as, or enlisting the assistance of, a substitute for a student in the taking of an examination or the performance of an academic assignment.
-
Altering grades, answers, or marks in an effort to change the earned grade or credit.
-
Submitting without authorization the same assignment for credit in more than one course, including if that student is repeating the same course.
-
Forging the signature of another or allowing forgery by another on any class or University-related document such as a class roll or drop/add sheet.
-
Gaining an objectively unfair academic advantage by failing to observe the expressed procedures or instructions relating to an exam or academic assignment.
-
Engaging in an activity that unfairly places another student at a disadvantage, such as taking, hiding, or altering resource material, or manipulating a grading system
-
Tips to Avoid Cheating
-
Working Together. Students are encouraged to work and study together provided the students cannot see each other’s code.
-
Students should work where their laptop screens are back-to-back. You can talk algorithms and logic, but not code.
-
Do not allow students to even peek at your code. If a student gets their hands on your code, both will be in violation of the plagiarism policy regardless of who actually wrote the code.
-
-
External Technology. Google and ChatGPT are great tools, but they are too easily used to write the code for you rather than understand the issues with your own code.
-
Citations. ALWAYS cite with whom you worked and where you got help, including any other student, friend, roommate, TA, or instructor.
Behavior
-
Expectations. Students are expected to behave themselves civilly and act politely and courteously. Robust debate is encouraged, but students must avoid personal attacks and escalation.
-
Final Authority. Students must understand that the instructor is the final authority for all things with this class. Students are cautioned not to start fights or "lashing out" if a decision by the instructor does not go the student’s way.
-
Appeal. Students have an appeals process for both grade appeals and for other decisions. This is the time for a student to voicing dissatisfaction.
-
-
Summary. There are appropriate contexts for expressing dissatisfaction. Students must follow the appropriate steps for an appeal.
-
Penalties. Students will normally be cautioned on unacceptable behavior. However, students may be penalized as the code of conduct permits for unacceptable behavior.
Auto-Grader Addendum
Some of your assignments will be auto-graded by Zylabs or Canvas. Attempting to defeat the auto-grader is considered cheating.