Course requirements and sample schedules can be found in the Computer Engineering section of the current bulletin, and more details about the technical elective requirement can be found in the Computer Engineering curriculum checklist(PDF). Additional references that might be useful include a flowchart (PDF) that shows the sequencing constraints for the major-specific courses, and a one-page handout (PDF) about the program.
This undergraduate program incorporates most of the core curricula in both electrical engineering and computer science so that students will be well prepared to work in the area of computer engineering, which substantially overlaps both fields. Both hardware and software aspects of computer science are included, and, in electrical engineering, students receive a solid grounding in circuit theory and in electronic circuits. The program includes several electrical engineering laboratory courses as well as the Computer Science Department’s advanced programming course.
Students will be prepared to work on all aspects of the design of digital hardware, as well as on the associated software that is now often an integral part of computer architecture. They will also be well equipped to work in the growing field of telecommunications. Students will have the prerequisites to delve more deeply into either hardware or software areas, and enter graduate programs in computer science, electrical engineering, or computer engineering. For example, they could take more advanced courses in VLSI, communications theory, computer architecture, electronic circuit theory, software engineering, or digital design.
Minors in electrical engineering and computer science are not open to computer engineering majors, due to excessive overlap.
The basic programming course requirements in the Computer Engineering Program are identical to those in the Computer Science Program. Some useful information about placement and computer languages used can be found here.
The Computer Engineering Program includes 15 points of technical electives. Any 3000-level or higher courses listed in the Computer Science or Electrical Engineering sections of the bulletin can be used for this requirement with the following exceptions: ELEN E3000, EEHS 3900, EEHS E4900, EEJR E4901, COMS W3101, COMS W4400, COMS W4405, courses used for other computer engineering requirements (including COMS W3203), and courses that have significant overlap with other required or elective courses (e.g., COMS W3134 and COMS W3137).
Up to one course may be chosen from outside the departments with adviser approval. Courses at the 3000 level or higher in other areas of engineering, math, and science can be considered for approval, as long as they do not significantly overlap with other required or elective courses. Economics courses cannot be used as technical electives.
Students are strongly encouraged to begin taking core computer engineering courses as sophomores. They may start with ELEN E1201 and COMS W1004 in the second semester of their first year and continue with other core courses one semester after that. For sample “early-starting” programs, see the course charts in the bulletin. It must be emphasized that these charts, as well as the “late-starting” charts that follow, present example schedules only; actual schedules may be customized in consultation with academic advisers.
Incoming combined-plan students who have not taken a course similar to ELEN E1201 before starting at Columbia should check the advice given to EE majors with a similar deficiency in the Undergraduate Academics section of the EE web site.