Prepare and deliver lectures to undergraduate or graduate students on topics such as programming, data structures, and software design. Evaluate and grade students' class work, laboratory work, assignments, and papers. Prepare course materials such as syllabi, homework assignments, and handouts. Compile, administer, and grade examinations or assign this work to others. Plan, evaluate, and revise curricula, course content, and course materials and methods of instruction. Initiate, facilitate, and moderate classroom discussions. Maintain student attendance records, grades, and other required records. Keep abreast of developments in the field by reading current literature, talking with colleagues, and participating in professional conferences. Maintain regularly scheduled office hours to advise and assist students. Supervise students' laboratory work. Advise students on academic and vocational curricula and on career issues. Collaborate with colleagues to address teaching and research issues. Select and obtain materials and supplies such as textbooks and laboratory equipment. Maintain computer equipment used in instruction. Conduct research in a particular field of knowledge and publish findings in professional journals, books, or electronic media. Participate in student recruitment, registration, and placement activities. Serve on academic or administrative committees that deal with institutional policies, departmental matters, and academic issues. Compile bibliographies of specialized materials for outside reading assignments.