其實呢兩科都重要,不過一定要二揀一,我會揀OS先
OS course 除咗教你OS點運作(一條process 嘅lifecycle, memory 點allocate, virtual memory 係乜,filesystem 係乜)最重要係教你system programming。正路你會順便練埋寫C, 寫kernel code
學semaphore/mutex 呢啲concept (multi-core / distributed system programming 嘅根本)
又應該會用Linux 教,畀機會你接觸多啲Linux system
呢啲knowledge 係好好好有用, 因為你會更易估倒啲嘅嘢點做點運作。記住學嗰時係學嗰concept 同principle, 基本上係唔會過時,一世受用
Computer architecture (或者叫computer organization) 就學ISA(撘單學埋assembly programming)CPU 點行一條instruction, memory caching 點運作。
正路會either 叫你寫vhdl/verlog/C 去emulate 嗰CPU, 寫嗰pipelined cpu implement 一個ISA咁。
實際應用上就少啲,對於我黎講最重要嘅concept就係pipelined instruction execution, 呢個concept 有時可以apply 落你點寫一個software 寫得快啲(例如你有啲code 又要用CPU, 又要用GPU, 會有知覺要pipeline 咗佢,唔好搞到用GPU嗰時CPU idle咗,or vice versa)
讀CS 啲fundamental course 你會學倒好啲time proven 嘅engineering design, 而呢啲engineering design/concept 其實可以apply 係唔同地方。
反而theory of computation( 應該係formal language, push down automaton, turning machine, P 同NP 嗰啲啦)你唔讀compiler 就冇乜用,都可以叫學regular expression嘅

雖然佢學嘅concept 又好unique 好得意嘅