Discussion of ethical, social, and legal issues related to computing. A continuation of the development of a disciplined approach to the design, coding, debugging, and testing of programs. Introduction to algorithmic analysis, recursion, data structures, and sorting mechanisms using a high-level language. Development, writing, and execution of assembly language programs for a contemporary computer architecture. Topics include introduction to the CPU architecture, data representation, addressing, encoding and decoding of program statements, integer arithmetic, logical operations, looping structure, table processing, and subroutine development and protocols.
Emphasis is placed on program structuring.
Also covered are machine independent concepts such as data representation, addressing techniques, and a brief introduction to system software. Object-oriented approach to design and analysis of algorithms, particularly those related to the processing of data structures, including trees, graphs, and linked lists. Other techniques include searching, sorting, and merging. Discussion of legal, social, and ethical issues. Study of topics related to modern microprocessors, including logic design, microprocessor architecture, interfaces, device drivers, interrupt systems, and performance parameters.